chore: tests

This commit is contained in:
lollipopkit🏳️‍⚧️
2025-08-22 00:25:26 +08:00
parent 24fd4b782d
commit 8270674b7d
5 changed files with 533 additions and 0 deletions

75
test/core_utils_test.dart Normal file
View File

@@ -0,0 +1,75 @@
import 'package:flutter_test/flutter_test.dart';
import 'package:server_box/core/utils/comparator.dart';
void main() {
group('ChainComparator Tests', () {
test('comparing sorts correctly', () {
final list = ['b', 'c', 'a'];
list.sort(ChainComparator.comparing<String, String>((s) => s).call);
expect(list, equals(['a', 'b', 'c']));
});
test('thenCompareBy sorts correctly', () {
final list = [('b', '2'), ('a', '3'), ('b', '1')];
list.sort(
ChainComparator.comparing<(String, String), String>((t) => t.$1)
.thenCompareBy<String>((t) => t.$2, reversed: false).call,
);
expect(list, equals([('a', '3'), ('b', '1'), ('b', '2')]));
});
test('thenCompareBy with reversed sorts correctly', () {
final list = [('b', '2'), ('a', '3'), ('b', '1')];
list.sort(
ChainComparator.comparing<(String, String), String>((t) => t.$1)
.thenCompareBy<String>((t) => t.$2, reversed: true).call,
);
expect(list, equals([('a', '3'), ('b', '2'), ('b', '1')]));
});
test('thenWithComparator sorts correctly', () {
final list = ['b', 'c', 'a'];
list.sort(ChainComparator.comparing<String, String>((s) => s)
.thenWithComparator((a, b) => a.length.compareTo(b.length)).call);
expect(list, equals(['a', 'b', 'c']));
});
test('thenCompareByReversed sorts correctly', () {
final list = [('b', '2'), ('a', '3'), ('b', '1')];
list.sort(
ChainComparator.comparing<(String, String), String>((t) => t.$1)
.thenCompareByReversed<String>((t) => t.$2).call,
);
expect(list, equals([('a', '3'), ('b', '2'), ('b', '1')]));
});
test('thenTrueFirst sorts correctly', () {
final list = [('a', false), ('b', true), ('c', false)];
list.sort(
ChainComparator.empty().thenTrueFirst((t) => t.$2).thenWithComparator((a, b) => a.$1.compareTo(b.$1)).call,
);
expect(list, equals([('b', true), ('a', false), ('c', false)]));
});
test('reversed sorts correctly', () {
final list = ['a', 'c', 'b'];
final comparator = ChainComparator.comparing<String, String>((s) => s);
list.sort(comparator.reversed().call);
expect(list, equals(['c', 'b', 'a']));
});
});
group('Comparators Tests', () {
test('compareStringCaseInsensitive sorts correctly', () {
final list = ['b', 'C', 'a'];
list.sort(Comparators.compareStringCaseInsensitive());
expect(list, equals(['a', 'b', 'C']));
});
test('compareStringCaseInsensitive with uppercaseFirst sorts correctly', () {
final list = ['b', 'C', 'a', 'B'];
list.sort(Comparators.compareStringCaseInsensitive(uppercaseFirst: true));
expect(list, equals(['a', 'B', 'b', 'C']));
});
});
}