Initial public release of Warp.

Repo-Sync-Origin: warpdotdev/warp-internal@12af1d983b
This commit is contained in:
David Stern
2026-04-28 08:43:33 -05:00
commit 0dbd3d567a
4982 changed files with 1431549 additions and 0 deletions
+51
View File
@@ -0,0 +1,51 @@
use crate::CharCounter;
#[test]
fn test_char_counter_sequential() {
let mut counter = CharCounter::new("Its a 🌯!");
assert_eq!(counter.char_offset(0), Some(0.into())); // I
assert_eq!(counter.char_offset(1), Some(1.into())); // t
assert_eq!(counter.char_offset(2), Some(2.into())); // (3 bytes)
assert_eq!(counter.char_offset(5), Some(3.into())); // s
assert_eq!(counter.char_offset(6), Some(4.into())); // <space>
assert_eq!(counter.char_offset(7), Some(5.into())); // a
assert_eq!(counter.char_offset(8), Some(6.into())); // <space>
assert_eq!(counter.char_offset(9), Some(7.into())); // 🌯 (4 bytes)
assert_eq!(counter.char_offset(13), Some(8.into())); // !
}
#[test]
fn test_char_counter_out_of_order_fails() {
let mut counter = CharCounter::new("words");
assert_eq!(counter.char_offset(2), Some(2.into()));
// Because the iterator only advances forwards, using an earlier offset is unsupported.
assert_eq!(counter.char_offset(1), None);
}
#[test]
fn test_char_counter_non_boundary() {
let mut counter = CharCounter::new("Its a 🌯!");
// Byte 11 is in the middle of the emoji.
assert_eq!(counter.char_offset(11), None);
}
#[test]
fn test_char_counter_out_of_bounds() {
let mut counter = CharCounter::new("short string");
assert_eq!(counter.char_offset(7), Some(7.into()));
assert_eq!(counter.char_offset(100), None);
}
#[test]
fn test_char_counter_nonsequential() {
let mut counter = CharCounter::new("Its a 🌯!");
// Skip ahead to the t.
assert_eq!(counter.char_offset(1), Some(1.into()));
// Now, skip past the multi-byte apostrophe to the first space.
assert_eq!(counter.char_offset(6), Some(4.into()));
// Skip ahead to the emoji.
assert_eq!(counter.char_offset(9), Some(7.into()));
}