Do delete test using EGCs
This commit is contained in:
parent
cc68315a3f
commit
c5e9412673
2 changed files with 18 additions and 14 deletions
|
|
@ -12,6 +12,7 @@ env_logger = "0.9"
|
||||||
fontdb = "0.9"
|
fontdb = "0.9"
|
||||||
log = "0.4"
|
log = "0.4"
|
||||||
orbclient = "0.3.35"
|
orbclient = "0.3.35"
|
||||||
|
unicode-segmentation = "1.7"
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
mono = []
|
mono = []
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,7 @@
|
||||||
use cosmic_text::{FontSystem, TextAction, TextBuffer, TextMetrics};
|
use cosmic_text::{FontSystem, TextAction, TextBuffer, TextMetrics};
|
||||||
use orbclient::{Color, EventOption, Renderer, Window, WindowFlag};
|
use orbclient::{Color, EventOption, Renderer, Window, WindowFlag};
|
||||||
use std::{env, fs, process, thread, time::{Duration, Instant}};
|
use std::{env, fs, process, thread, time::{Duration, Instant}};
|
||||||
|
use unicode_segmentation::UnicodeSegmentation;
|
||||||
|
|
||||||
fn redraw(window: &mut Window, buffer: &mut TextBuffer<'_>) {
|
fn redraw(window: &mut Window, buffer: &mut TextBuffer<'_>) {
|
||||||
let bg_color = Color::rgb(0x34, 0x34, 0x34);
|
let bg_color = Color::rgb(0x34, 0x34, 0x34);
|
||||||
|
|
@ -109,30 +110,32 @@ fn main() {
|
||||||
for line in text.lines() {
|
for line in text.lines() {
|
||||||
log::debug!("Line {:?}", line);
|
log::debug!("Line {:?}", line);
|
||||||
|
|
||||||
for c in line.chars() {
|
for grapheme in line.graphemes(true) {
|
||||||
log::trace!("Insert {:?}", c);
|
for c in grapheme.chars() {
|
||||||
|
log::trace!("Insert {:?}", c);
|
||||||
|
|
||||||
// Test backspace of character
|
// Test backspace of character
|
||||||
{
|
{
|
||||||
let cursor = buffer.cursor();
|
let cursor = buffer.cursor();
|
||||||
|
buffer.action(TextAction::Insert(c));
|
||||||
|
buffer.action(TextAction::Backspace);
|
||||||
|
assert_eq!(cursor, buffer.cursor());
|
||||||
|
}
|
||||||
|
|
||||||
|
// Finally, normal insert of character
|
||||||
buffer.action(TextAction::Insert(c));
|
buffer.action(TextAction::Insert(c));
|
||||||
buffer.action(TextAction::Backspace);
|
|
||||||
assert_eq!(cursor, buffer.cursor());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/*TODO: Delete will remove whole EGC
|
// Test delete of EGC
|
||||||
// Test delete of character
|
|
||||||
{
|
{
|
||||||
let cursor = buffer.cursor();
|
let cursor = buffer.cursor();
|
||||||
buffer.action(TextAction::Insert(c));
|
|
||||||
buffer.action(TextAction::Previous);
|
buffer.action(TextAction::Previous);
|
||||||
buffer.action(TextAction::Delete);
|
buffer.action(TextAction::Delete);
|
||||||
|
for c in grapheme.chars() {
|
||||||
|
buffer.action(TextAction::Insert(c));
|
||||||
|
}
|
||||||
assert_eq!(cursor, buffer.cursor());
|
assert_eq!(cursor, buffer.cursor());
|
||||||
}
|
}
|
||||||
*/
|
|
||||||
|
|
||||||
// Finally, normal insert of character
|
|
||||||
buffer.action(TextAction::Insert(c));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Test backspace of newline
|
// Test backspace of newline
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue