• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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