twonly-app-dependencies/hashlib/test/xxh_test.dart
2025-12-07 16:10:41 +01:00

71 lines
2.1 KiB
Dart

// Copyright (c) 2023, Sudipto Chandra
// All rights reserved. Check LICENSE file for details.
// ignore: library_annotations
@Tags(['vm-only'])
import 'dart:io';
import 'package:hashlib/hashlib.dart';
import 'package:test/test.dart';
List<String> readLines(String filename) {
final file = File(Directory('test/fixures/$filename').absolute.path);
final text = file.readAsStringSync();
return text.split(RegExp(r'(\r)?\n'));
}
void main() {
group('XXH test with fixures', () {
const int maxLength = 1500;
final text = readLines('long.txt').join('\n').codeUnits;
test('for xxh32', () {
var actual = readLines('xxh32.csv');
for (var line in actual) {
var parts = line.split(',');
if (parts.length != 2) continue;
int len = int.parse(parts[0]);
if (len > maxLength) break;
var out = xxh32.hex(text.take(len).toList());
expect(out, equals(parts[1]), reason: 'length: $len');
}
});
test('for xxh64', () {
var actual = readLines('xxh64.csv');
for (var line in actual) {
var parts = line.split(',');
if (parts.length != 2) continue;
int len = int.parse(parts[0]);
if (len > maxLength) break;
var out = xxh64.hex(text.take(len).toList());
expect(out, equals(parts[1]), reason: 'length: $len');
}
});
test('for xxh3-64', () {
var actual = readLines('xxh3_64.csv');
for (var line in actual) {
var parts = line.split(',');
if (parts.length != 2) continue;
int len = int.parse(parts[0]);
if (len > maxLength) break;
var out = xxh3.hex(text.take(len).toList());
expect(out, equals(parts[1]), reason: 'length: $len');
}
});
test('for xxh3-128', () {
var actual = readLines('xxh3_128.csv');
for (var line in actual) {
var parts = line.split(',');
if (parts.length != 2) continue;
int len = int.parse(parts[0]);
if (len > maxLength) break;
var out = xxh128.hex(text.take(len).toList());
expect(out, equals(parts[1]), reason: 'length: $len');
}
});
});
}