1*0f9be3d1SNick Fitzgerald use wasmtime::Result;
2*0f9be3d1SNick Fitzgerald use wasmtime_environ::collections::TryString;
3*0f9be3d1SNick Fitzgerald use wasmtime_fuzzing::oom::OomTest;
4*0f9be3d1SNick Fitzgerald 
5*0f9be3d1SNick Fitzgerald #[test]
try_string_with_capacity() -> Result<()>6*0f9be3d1SNick Fitzgerald fn try_string_with_capacity() -> Result<()> {
7*0f9be3d1SNick Fitzgerald     OomTest::new().test(|| {
8*0f9be3d1SNick Fitzgerald         let _s = TryString::with_capacity(100)?;
9*0f9be3d1SNick Fitzgerald         Ok(())
10*0f9be3d1SNick Fitzgerald     })
11*0f9be3d1SNick Fitzgerald }
12*0f9be3d1SNick Fitzgerald 
13*0f9be3d1SNick Fitzgerald #[test]
try_string_reserve() -> Result<()>14*0f9be3d1SNick Fitzgerald fn try_string_reserve() -> Result<()> {
15*0f9be3d1SNick Fitzgerald     OomTest::new().test(|| {
16*0f9be3d1SNick Fitzgerald         let mut s = TryString::new();
17*0f9be3d1SNick Fitzgerald         s.reserve(10)?;
18*0f9be3d1SNick Fitzgerald         Ok(())
19*0f9be3d1SNick Fitzgerald     })
20*0f9be3d1SNick Fitzgerald }
21*0f9be3d1SNick Fitzgerald 
22*0f9be3d1SNick Fitzgerald #[test]
try_string_reserve_exact() -> Result<()>23*0f9be3d1SNick Fitzgerald fn try_string_reserve_exact() -> Result<()> {
24*0f9be3d1SNick Fitzgerald     OomTest::new().test(|| {
25*0f9be3d1SNick Fitzgerald         let mut s = TryString::new();
26*0f9be3d1SNick Fitzgerald         s.reserve_exact(3)?;
27*0f9be3d1SNick Fitzgerald         Ok(())
28*0f9be3d1SNick Fitzgerald     })
29*0f9be3d1SNick Fitzgerald }
30*0f9be3d1SNick Fitzgerald 
31*0f9be3d1SNick Fitzgerald #[test]
try_string_push() -> Result<()>32*0f9be3d1SNick Fitzgerald fn try_string_push() -> Result<()> {
33*0f9be3d1SNick Fitzgerald     OomTest::new().test(|| {
34*0f9be3d1SNick Fitzgerald         let mut s = TryString::new();
35*0f9be3d1SNick Fitzgerald         s.push('c')?;
36*0f9be3d1SNick Fitzgerald         Ok(())
37*0f9be3d1SNick Fitzgerald     })
38*0f9be3d1SNick Fitzgerald }
39*0f9be3d1SNick Fitzgerald 
40*0f9be3d1SNick Fitzgerald #[test]
try_string_push_str() -> Result<()>41*0f9be3d1SNick Fitzgerald fn try_string_push_str() -> Result<()> {
42*0f9be3d1SNick Fitzgerald     OomTest::new().test(|| {
43*0f9be3d1SNick Fitzgerald         let mut s = TryString::new();
44*0f9be3d1SNick Fitzgerald         s.push_str("hello")?;
45*0f9be3d1SNick Fitzgerald         Ok(())
46*0f9be3d1SNick Fitzgerald     })
47*0f9be3d1SNick Fitzgerald }
48*0f9be3d1SNick Fitzgerald 
49*0f9be3d1SNick Fitzgerald #[test]
try_string_shrink_to_fit() -> Result<()>50*0f9be3d1SNick Fitzgerald fn try_string_shrink_to_fit() -> Result<()> {
51*0f9be3d1SNick Fitzgerald     OomTest::new().test(|| {
52*0f9be3d1SNick Fitzgerald         // len == cap == 0
53*0f9be3d1SNick Fitzgerald         let mut s = TryString::new();
54*0f9be3d1SNick Fitzgerald         s.shrink_to_fit()?;
55*0f9be3d1SNick Fitzgerald 
56*0f9be3d1SNick Fitzgerald         // len == 0 < cap
57*0f9be3d1SNick Fitzgerald         let mut s = TryString::with_capacity(4)?;
58*0f9be3d1SNick Fitzgerald         s.shrink_to_fit()?;
59*0f9be3d1SNick Fitzgerald 
60*0f9be3d1SNick Fitzgerald         // 0 < len < cap
61*0f9be3d1SNick Fitzgerald         let mut s = TryString::with_capacity(4)?;
62*0f9be3d1SNick Fitzgerald         s.push('a')?;
63*0f9be3d1SNick Fitzgerald         s.shrink_to_fit()?;
64*0f9be3d1SNick Fitzgerald 
65*0f9be3d1SNick Fitzgerald         // 0 < len == cap
66*0f9be3d1SNick Fitzgerald         let mut s = TryString::new();
67*0f9be3d1SNick Fitzgerald         s.reserve_exact(2)?;
68*0f9be3d1SNick Fitzgerald         s.push('a')?;
69*0f9be3d1SNick Fitzgerald         s.push('a')?;
70*0f9be3d1SNick Fitzgerald         s.shrink_to_fit()?;
71*0f9be3d1SNick Fitzgerald 
72*0f9be3d1SNick Fitzgerald         Ok(())
73*0f9be3d1SNick Fitzgerald     })
74*0f9be3d1SNick Fitzgerald }
75*0f9be3d1SNick Fitzgerald 
76*0f9be3d1SNick Fitzgerald #[test]
try_string_into_boxed_str() -> Result<()>77*0f9be3d1SNick Fitzgerald fn try_string_into_boxed_str() -> Result<()> {
78*0f9be3d1SNick Fitzgerald     OomTest::new().test(|| {
79*0f9be3d1SNick Fitzgerald         // len == cap == 0
80*0f9be3d1SNick Fitzgerald         let s = TryString::new();
81*0f9be3d1SNick Fitzgerald         let _ = s.into_boxed_str()?;
82*0f9be3d1SNick Fitzgerald 
83*0f9be3d1SNick Fitzgerald         // len == 0 < cap
84*0f9be3d1SNick Fitzgerald         let s = TryString::with_capacity(4)?;
85*0f9be3d1SNick Fitzgerald         let _ = s.into_boxed_str()?;
86*0f9be3d1SNick Fitzgerald 
87*0f9be3d1SNick Fitzgerald         // 0 < len < cap
88*0f9be3d1SNick Fitzgerald         let mut s = TryString::with_capacity(4)?;
89*0f9be3d1SNick Fitzgerald         s.push('a')?;
90*0f9be3d1SNick Fitzgerald         let _ = s.into_boxed_str()?;
91*0f9be3d1SNick Fitzgerald 
92*0f9be3d1SNick Fitzgerald         // 0 < len == cap
93*0f9be3d1SNick Fitzgerald         let mut s = TryString::new();
94*0f9be3d1SNick Fitzgerald         s.reserve_exact(2)?;
95*0f9be3d1SNick Fitzgerald         s.push('a')?;
96*0f9be3d1SNick Fitzgerald         s.push('a')?;
97*0f9be3d1SNick Fitzgerald         let _ = s.into_boxed_str()?;
98*0f9be3d1SNick Fitzgerald 
99*0f9be3d1SNick Fitzgerald         Ok(())
100*0f9be3d1SNick Fitzgerald     })
101*0f9be3d1SNick Fitzgerald }
102