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 Fitzgeraldfn 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 Fitzgeraldfn 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 Fitzgeraldfn 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 Fitzgeraldfn 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 Fitzgeraldfn 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 Fitzgeraldfn 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 Fitzgeraldfn 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