1 // This file is part of ICU4X. For terms of use, please see the file
2 // called LICENSE at the top level of the ICU4X source tree
3 // (online at: https://github.com/unicode-org/icu4x/blob/main/LICENSE ).
4
5 extern crate alloc;
6
7 // Don't import anything, to assert that compiled data compiles without imports.
8 // In particular, *do not* import `icu_provider::prelude::*`.
9
10 struct Baked;
11
12 const _: () = {
13 #[allow(unused_imports)]
14 #[path = "data/mod.rs"]
15 mod baked_data;
16 baked_data::make_provider!(Baked);
17 baked_data::impl_hello_world_v1!(Baked, DRY, ITER);
18 };
19
20 #[test]
iter()21 fn iter() {
22 use icu_provider::hello_world::HelloWorldProvider;
23 use icu_provider::prelude::*;
24
25 assert_eq!(Baked.iter_ids(), HelloWorldProvider.iter_ids(),)
26 }
27
28 #[test]
load()29 fn load() {
30 use icu_provider::hello_world::{HelloWorldProvider, HelloWorldV1};
31 use icu_provider::prelude::*;
32
33 for id in HelloWorldProvider
34 .iter_ids()
35 .unwrap()
36 .into_iter()
37 .chain([DataIdentifierCow::default()])
38 {
39 let req = DataRequest {
40 id: id.as_borrowed(),
41 ..Default::default()
42 };
43 let expected = HelloWorldProvider.load(req);
44 let baked = DataProvider::load(&Baked, req);
45 assert_eq!(baked.map(|r| r.payload), expected.map(|r| r.payload));
46
47 let expected = HelloWorldProvider.dry_load(req);
48 let baked = DryDataProvider::<HelloWorldV1>::dry_load(&Baked, req);
49 assert_eq!(baked, expected);
50 }
51 }
52
53 #[test]
prefix_match()54 fn prefix_match() {
55 use icu_provider::hello_world::HelloWorldV1;
56 use icu_provider::prelude::*;
57
58 let id = DataIdentifierCow::from_owned(
59 DataMarkerAttributes::from_str_or_panic("reve").to_owned(),
60 "ja".parse().unwrap(),
61 );
62
63 assert!(DataProvider::<HelloWorldV1>::load(
64 &Baked,
65 DataRequest {
66 id: id.as_borrowed(),
67 ..Default::default()
68 }
69 )
70 .is_err());
71
72 assert!(DataProvider::<HelloWorldV1>::load(
73 &Baked,
74 DataRequest {
75 id: id.as_borrowed(),
76 metadata: {
77 let mut metadata = DataRequestMetadata::default();
78 metadata.attributes_prefix_match = true;
79 metadata
80 }
81 }
82 )
83 .is_ok());
84
85 let id = DataIdentifierCow::from_owned(
86 DataMarkerAttributes::from_str_or_panic("non-existent").to_owned(),
87 "ja".parse().unwrap(),
88 );
89
90 assert!(DataProvider::<HelloWorldV1>::load(
91 &Baked,
92 DataRequest {
93 id: id.as_borrowed(),
94 metadata: {
95 let mut metadata = DataRequestMetadata::default();
96 metadata.attributes_prefix_match = true;
97 metadata
98 }
99 }
100 )
101 .is_err());
102 }
103