Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Firefox/intl/l10n/rust/l10nregistry-tests/tests/   (Firefox Browser Version 153.0.1©)  Datei vom 27.6.2026 mit Größe 9 kB image not shown  

Quelle  registry.rs   Sprache: Rust

 

use l10nregistry_tests::{FileSource, RegistrySetup, TestFileFetcher};
use unic_langid::LanguageIdentifier;

static FTL_RESOURCE_TOOLKIT: &str = "toolkit/global/textActions.ftl";
static FTL_RESOURCE_BROWSER: &str = "branding/brand.ftl";

#[test]
fn test_get_sources_for_resource() {
    let en_us: LanguageIdentifier = "en-US".parse().unwrap();
    let setup = RegistrySetup::new(
        "test",
        vec![
            FileSource::new("toolkit", None, vec![en_us.clone()], "toolkit/{locale}/"),
            FileSource::new("browser", None, vec![en_us.clone()], "browser/{locale}/"),
        ],
        vec![en_us.clone()],
    );
    let fetcher = TestFileFetcher::new();
    let (_, reg) = fetcher.get_registry_and_environment(setup);

    {
        let metasources = reg
            .try_borrow_metasources()
            .expect("Unable to borrow metasources.");

        let toolkit = metasources.file_source_by_name(0, "toolkit").unwrap();
        let browser = metasources.file_source_by_name(0, "browser").unwrap();
        let toolkit_resource_id = FTL_RESOURCE_TOOLKIT.into();

        let mut i = metasources.get_sources_for_resource(0, &en_us, &toolkit_resource_id);

        assert_eq!(i.next(), Some(toolkit));
        assert_eq!(i.next(), Some(browser));
        assert_eq!(i.next(), None);

        assert!(browser
            .fetch_file_sync(&en_us, &FTL_RESOURCE_TOOLKIT.into(), false)
            .is_none());

        let mut i = metasources.get_sources_for_resource(0, &en_us, &toolkit_resource_id);
        assert_eq!(i.next(), Some(toolkit));
        assert_eq!(i.next(), None);

        assert!(toolkit
            .fetch_file_sync(&en_us, &FTL_RESOURCE_TOOLKIT.into(), false)
            .is_some());

        let mut i = metasources.get_sources_for_resource(0, &en_us, &toolkit_resource_id);
        assert_eq!(i.next(), Some(toolkit));
        assert_eq!(i.next(), None);
    }
}

#[test]
fn test_generate_bundles_for_lang_sync() {
    let en_us: LanguageIdentifier = "en-US".parse().unwrap();
    let setup = RegistrySetup::new(
        "test",
        vec![
            FileSource::new("toolkit", None, vec![en_us.clone()], "toolkit/{locale}/"),
            FileSource::new("browser", None, vec![en_us.clone()], "browser/{locale}/"),
        ],
        vec![en_us.clone()],
    );
    let fetcher = TestFileFetcher::new();
    let (_, reg) = fetcher.get_registry_and_environment(setup);

    let paths = vec![FTL_RESOURCE_TOOLKIT.into(), FTL_RESOURCE_BROWSER.into()];
    let mut i = reg.generate_bundles_for_lang_sync(en_us.clone(), paths);

    assert!(i.next().is_some());
    assert!(i.next().is_none());
}

#[test]
fn test_generate_bundles_sync() {
    let en_us: LanguageIdentifier = "en-US".parse().unwrap();
    let setup = RegistrySetup::new(
        "test",
        vec![
            FileSource::new("toolkit", None, vec![en_us.clone()], "toolkit/{locale}/"),
            FileSource::new("browser", None, vec![en_us.clone()], "browser/{locale}/"),
        ],
        vec![en_us.clone()],
    );
    let fetcher = TestFileFetcher::new();
    let (_, reg) = fetcher.get_registry_and_environment(setup);

    let paths = vec![FTL_RESOURCE_TOOLKIT.into(), FTL_RESOURCE_BROWSER.into()];
    let lang_ids = vec![en_us];
    let mut i = reg.generate_bundles_sync(lang_ids.into_iter(), paths);

    assert!(i.next().is_some());
    assert!(i.next().is_none());
}

#[tokio::test]
async fn test_generate_bundles_for_lang() {
    use futures::stream::StreamExt;

    let en_us: LanguageIdentifier = "en-US".parse().unwrap();
    let setup = RegistrySetup::new(
        "test",
        vec![
            FileSource::new("toolkit", None, vec![en_us.clone()], "toolkit/{locale}/"),
            FileSource::new("browser", None, vec![en_us.clone()], "browser/{locale}/"),
        ],
        vec![en_us.clone()],
    );
    let fetcher = TestFileFetcher::new();
    let (_, reg) = fetcher.get_registry_and_environment(setup);

    let paths = vec![FTL_RESOURCE_TOOLKIT.into(), FTL_RESOURCE_BROWSER.into()];
    let mut i = reg
        .generate_bundles_for_lang(en_us, paths)
        .expect("Failed to get GenerateBundles.");

    assert!(i.next().await.is_some());
    assert!(i.next().await.is_none());
}

#[tokio::test]
async fn test_generate_bundles() {
    use futures::stream::StreamExt;

    let en_us: LanguageIdentifier = "en-US".parse().unwrap();
    let setup = RegistrySetup::new(
        "test",
        vec![
            FileSource::new("toolkit", None, vec![en_us.clone()], "toolkit/{locale}/"),
            FileSource::new("browser", None, vec![en_us.clone()], "browser/{locale}/"),
        ],
        vec![en_us.clone()],
    );
    let fetcher = TestFileFetcher::new();
    let (_, reg) = fetcher.get_registry_and_environment(setup);

    let paths = vec![FTL_RESOURCE_TOOLKIT.into(), FTL_RESOURCE_BROWSER.into()];
    let langs = vec![en_us];
    let mut i = reg
        .generate_bundles(langs.into_iter(), paths)
        .expect("Failed to get GenerateBundles.");

    assert!(i.next().await.is_some());
    assert!(i.next().await.is_none());
}

#[test]
fn test_manage_sources() {
    let en_us: LanguageIdentifier = "en-US".parse().unwrap();
    let setup = RegistrySetup::new(
        "test",
        vec![
            FileSource::new("toolkit", None, vec![en_us.clone()], "toolkit/{locale}/"),
            FileSource::new("browser", None, vec![en_us.clone()], "browser/{locale}/"),
        ],
        vec![en_us.clone()],
    );
    let fetcher = TestFileFetcher::new();
    let (_, reg) = fetcher.get_registry_and_environment(setup);

    let lang_ids = vec![en_us];

    let paths = vec![FTL_RESOURCE_TOOLKIT.into(), FTL_RESOURCE_BROWSER.into()];

    let mut i = reg.generate_bundles_sync(lang_ids.clone().into_iter(), paths);

    assert!(i.next().is_some());
    assert!(i.next().is_none());

    reg.clone()
        .remove_sources(vec!["toolkit"])
        .expect("Failed to remove a source.");

    let paths = vec![FTL_RESOURCE_TOOLKIT.into(), FTL_RESOURCE_BROWSER.into()];
    let mut i = reg.generate_bundles_sync(lang_ids.clone().into_iter(), paths);
    assert!(i.next().is_none());

    let paths = vec![FTL_RESOURCE_BROWSER.into()];
    let mut i = reg.generate_bundles_sync(lang_ids.clone().into_iter(), paths);
    assert!(i.next().is_some());
    assert!(i.next().is_none());

    reg.register_sources(vec![fetcher.get_test_file_source(
        "toolkit",
        None,
        lang_ids.clone(),
        "browser/{locale}/",
    )])
    .expect("Failed to register a source.");

    let paths = vec![FTL_RESOURCE_TOOLKIT.into(), FTL_RESOURCE_BROWSER.into()];
    let mut i = reg.generate_bundles_sync(lang_ids.clone().into_iter(), paths);
    assert!(i.next().is_none());

    reg.update_sources(vec![fetcher.get_test_file_source(
        "toolkit",
        None,
        lang_ids.clone(),
        "toolkit/{locale}/",
    )])
    .expect("Failed to update a source.");

    let paths = vec![FTL_RESOURCE_TOOLKIT.into(), FTL_RESOURCE_BROWSER.into()];
    let mut i = reg.generate_bundles_sync(lang_ids.clone().into_iter(), paths);
    assert!(i.next().is_some());
    assert!(i.next().is_none());
}

#[test]
fn test_generate_bundles_with_metasources_sync() {
    let en_us: LanguageIdentifier = "en-US".parse().unwrap();
    let setup = RegistrySetup::new(
        "test",
        vec![
            FileSource::new(
                "toolkit",
                Some("app"),
                vec![en_us.clone()],
                "toolkit/{locale}/",
            ),
            FileSource::new(
                "browser",
                Some("app"),
                vec![en_us.clone()],
                "browser/{locale}/",
            ),
            FileSource::new(
                "toolkit",
                Some("langpack"),
                vec![en_us.clone()],
                "toolkit/{locale}/",
            ),
            FileSource::new(
                "browser",
                Some("langpack"),
                vec![en_us.clone()],
                "browser/{locale}/",
            ),
        ],
        vec![en_us.clone()],
    );
    let fetcher = TestFileFetcher::new();
    let (_, reg) = fetcher.get_registry_and_environment(setup);

    let paths = vec![FTL_RESOURCE_TOOLKIT.into(), FTL_RESOURCE_BROWSER.into()];
    let lang_ids = vec![en_us];
    let mut i = reg.generate_bundles_sync(lang_ids.into_iter(), paths);

    assert!(i.next().is_some());
    assert!(i.next().is_some());
    assert!(i.next().is_none());
}

#[tokio::test]
async fn test_generate_bundles_with_metasources() {
    use futures::stream::StreamExt;

    let en_us: LanguageIdentifier = "en-US".parse().unwrap();

    let setup = RegistrySetup::new(
        "test",
        vec![
            FileSource::new(
                "toolkit",
                Some("app"),
                vec![en_us.clone()],
                "toolkit/{locale}/",
            ),
            FileSource::new(
                "browser",
                Some("app"),
                vec![en_us.clone()],
                "browser/{locale}/",
            ),
            FileSource::new(
                "toolkit",
                Some("langpack"),
                vec![en_us.clone()],
                "toolkit/{locale}/",
            ),
            FileSource::new(
                "browser",
                Some("langpack"),
                vec![en_us.clone()],
                "browser/{locale}/",
            ),
        ],
        vec![en_us.clone()],
    );

    let fetcher = TestFileFetcher::new();
    let (_, reg) = fetcher.get_registry_and_environment(setup);

    let paths = vec![FTL_RESOURCE_TOOLKIT.into(), FTL_RESOURCE_BROWSER.into()];
    let langs = vec![en_us];
    let mut i = reg
        .generate_bundles(langs.into_iter(), paths)
        .expect("Failed to get GenerateBundles.");

    assert!(i.next().await.is_some());
    assert!(i.next().await.is_some());
    assert!(i.next().await.is_none());
}

Messung V0.5 in Prozent
C=96 H=96 G=95

¤ Dauer der Verarbeitung: 0.12 Sekunden  (vorverarbeitet am  2026-09-28) ¤

*© 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.