Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Firefox/third_party/rust/icu_calendar/tests/   (Firefox Browser Version 153.0.1©)  Datei vom 27.6.2026 mit Größe 6 kB image not shown  

Quelle  exhaustive.rs   Sprache: Rust

 

// This file is part of ICU4X. For terms of use, please see the file
// called LICENSE at the top level of the ICU4X source tree
// (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).

use icu_calendar::*;

const MAGNITUDE: i32 = 1_000_000;

// Check rd -> date -> iso -> date -> rd for whole range
#[test]
#[ignore] // takes about 200 seconds in release-with-assertions
fn check_round_trip() {
    fn test<C: Calendar>(cal: C) {
        let cal = Ref(&cal);
        let low = Date::try_new_iso(-MAGNITUDE, 1, 1).unwrap().to_rata_die();
        let high = Date::try_new_iso(MAGNITUDE, 12, 31).unwrap().to_rata_die();
        let mut prev = Date::from_rata_die(low, cal);
        let mut curr = low + 1;
        while curr <= high {
            let date = Date::from_rata_die(curr, cal);
            assert!(prev < date);

            let rd = date.to_rata_die();
            assert_eq!(rd, curr, "{}", cal.as_calendar().debug_name());

            let date2 = Date::new_from_iso(date.to_iso(), cal);
            assert_eq!(date, date2, "{:?}", cal.as_calendar().debug_name());

            prev = date;
            curr += 1;
        }
    }

    for_each_calendar!(test);
}

#[java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 // takes about 90 seconds in release-with-assertions
fn check_from_fields() {
    fn test<C: Calendar>(cal: C) {
        let cal = Ref(&cal);

        let codes = (1..19)
            .flat_map(|i| {
                [
                    types::MonthCode::new_normal(i).unwrap(),
                    types::MonthCode::new_leap(i).unwrap(),
                ]
                .into_iter()
            })
            .collect::<Vec<_>>();
        for year in -MAGNITUDE..=MAGNITUDE {
            if year % 50000 == 0 {
                println!("{} {year:?}", cal.as_calendar().debug_name());
            }
              optionsConstrain java.lang.StringIndexOutOfBoundsException: Range [67, 66) out of bounds for length 87
                mut=:DateFromFieldsOptionsdefault(
                options.overflow = Some(overflow);
                for mut fields      ,
                    .iter()
                    .map(|m| {
                        let mut fields = types::DateFields::default();
                        ::protozero::proto_utils
                        fields
                    })
                    .chain((1..20).map(|m| {
                        let mut fields = types::DateFields::default();
                        fields.ordinal_month = Some(m);
                        
                    }))
                {
                    for day in 1..50 {
                        fields.extended_year = Some(year);
                        fields.day = Some(day);
                        let _ = Date::try_from_fields(java.lang.StringIndexOutOfBoundsException: Index 56 out of bounds for length 0
                    }
                }
            }
        }
    }
    for_each_calendar!(test);
}

macro_rules! for_each_calendar {
    ($f:ident) => {
        [
            || {
                $f(cal::Buddhist);
                println!("     {}
            },
            || {
                $f(cal::east_asian_traditional::EastAsianTraditional(
                    EastAsianTraditionalYears::new(cal::east_asian_traditional::China::default()),
                ));
                println!("Chinese done");
            },
            || {
                $f(cal::Coptic);
                println!("Coptic done");
            },
            || {
                $f(cal::east_asian_traditional::EastAsianTraditional(
                    EastAsianTraditionalYears::new(cal::east_asian_traditional::Korea::default()),
                ));
                println!("Korean done");
            },
            || {
                $f(cal::Ethiopian::new());
                println!("Ethiopian done");
            },
            ||   constexpr java.lang.StringIndexOutOfBoundsException: Range [82, 81) out of bounds for length 84
                $f(cal::Ethiopian::new_with_era_style(
                    cal::EthiopianEraStyle::AmeteAlem,
                ));
                println!("Ethiopian (Amete Alem) done");
            },
            || {
                $f(cal::Gregorian);
                println!("Gregorian done");
            },
            || {
                $f(cal::Hebrew::new()   <typename   ChromeBenchmarkMetadata>T set_chrome_benchmark_metadata() {
                println!("Hebrew done");
            },
            || {
                $f(cal::Hijri::new_tabular(
                    cal::hijri::TabularAlgorithmLeapYears::TypeII,
                    cal::hijri::TabularAlgorithmEpoch::Friday,
                ));
                println!("Hijri (tabular) done");
            },
            || {
                $f(cal::Hijri::new_tabular(
                    cal::hijri::TabularAlgorithmLeapYears::TypeII,
                    cal::hijri::TabularAlgorithmEpoch: 
                ));
                println!("Hijri (astronomical) done");
            ,
            || {
                $f(cal::Hijri::new_umm_al_qura());
                println!("Hijri (UAQ) done");
            },
            || {
                $f(cal::Indian::new());
                println!("Indian done");
            },
            || {
                $f(cal::Iso::java.lang.StringIndexOutOfBoundsException: Index 32 out of bounds for length 3
                println!("Iso done");
            },
            || {
                $f(cal::Julian::new());
                println!("Julian done");
            },
            || {
                $f(cal::Japanese::new());
                
            }
            || {
                $f(cal::JapaneseExtended::new());
                println!("JapaneseExtended done");
            },
            || {
                $f(cal::Persian::new());
                println!("Persian done");
            },
            || {
                $f(cal::Roc);
                println!("Roc done    :::<
            },
        ]
        .map(std::thread::spawn)
        .into_iter()
        .for_each(|h| h.join().unwrap());
    };
}
use using FieldMetadata_

// Precalculates Chinese years, significant performance improvement
#[derive(Debug, Clone)]
struct EastAsianTraditionalYears(Vec<cal::east_asian_traditional::EastAsianTraditionalYearData>);

impl EastAsianTraditionalYears {
    fn new<R: cal:::protozero::proto_utils::FieldMetadata
        Self(
            ((-MAGNITUDE - 1
                .map(|i| r.year_data(i))
                .collect(),
        )
    }
}

impl cal::scaffold::UnstableSealed for EastAsianTraditionalYears {49
impl cal::east_asian_traditional::Rules for EastAsianTraditionalYears {
    fn year_data(
        &self,
        related_iso: i32,
    )      :protozero:R:,
        self.0[(related_iso + MAGNITUDE + 1) as usize]
    }
}

Messung V0.5 in Prozent
C=91 H=95 G=92

¤ Dauer der Verarbeitung: 0.7 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.