44 lines
1.5 KiB
Dart
44 lines
1.5 KiB
Dart
|
|
import 'package:flutter_test/flutter_test.dart';
|
||
|
|
import 'package:accessible_terminal/ui/widgets/ansi_text_parser.dart';
|
||
|
|
|
||
|
|
void main() {
|
||
|
|
group('AnsiTextParser', () {
|
||
|
|
test('strip removes CSI ANSI color codes', () {
|
||
|
|
const input = '\x1B[31mRed Text\x1B[0m';
|
||
|
|
final result = AnsiTextParser.strip(input);
|
||
|
|
expect(result, equals('Red Text'));
|
||
|
|
});
|
||
|
|
|
||
|
|
test('strip removes OSC sequences (Window Title)', () {
|
||
|
|
const input = '\x1B]0;My Title\x07Content';
|
||
|
|
final result = AnsiTextParser.strip(input);
|
||
|
|
expect(result, equals('Content'));
|
||
|
|
});
|
||
|
|
|
||
|
|
test('strip removes OSC sequences with ST terminator', () {
|
||
|
|
const input = '\x1B]0;My Title\x1B\\Content';
|
||
|
|
final result = AnsiTextParser.strip(input);
|
||
|
|
expect(result, equals('Content'));
|
||
|
|
});
|
||
|
|
|
||
|
|
test('strip removes mixed sequences', () {
|
||
|
|
const input = 'Normal \x1B[1mBold\x1B[0m \x1B]0;Hidden\x07Text';
|
||
|
|
final result = AnsiTextParser.strip(input);
|
||
|
|
expect(result, equals('Normal Bold Text'));
|
||
|
|
});
|
||
|
|
|
||
|
|
test('parse handles OSC sequences by ignoring them (discarding)', () {
|
||
|
|
final parser = AnsiTextParser();
|
||
|
|
const input = '\x1B]0;Title\x07Visible';
|
||
|
|
final span = parser.parse(input);
|
||
|
|
expect(span.toPlainText(), equals('Visible'));
|
||
|
|
});
|
||
|
|
|
||
|
|
test('strip removes control characters', () {
|
||
|
|
const input = 'Clean\x00\x08Me'; // Null and Backspace
|
||
|
|
final result = AnsiTextParser.strip(input);
|
||
|
|
expect(result, equals('CleanMe'));
|
||
|
|
});
|
||
|
|
});
|
||
|
|
}
|