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

84 lines
3 KiB
Dart

// Copyright (c) 2023, Sudipto Chandra
// All rights reserved. Check LICENSE file for details.
import 'package:hashlib/hashlib.dart';
import 'package:test/test.dart';
void main() {
group('RIPEMD-160 test', () {
test('with empty string', () {
var m = "";
var r = "9c1185a5c5e9fc54612808977ee8f548b2258d31";
expect(ripemd160sum(m), r);
});
test('with long string 1', () {
var m = "The quick brown fox jumps over the lazy dog";
var r = "37f332f68db77bd9d7edd4969571ad671cf9dd3b";
expect(ripemd160sum(m), r);
});
test('with long string 2', () {
var m = "The quick brown fox jumps over the lazy cog";
var r = "132072df690933835eb8b6ad0b77e7b6f14acad7";
expect(ripemd160sum(m), r);
});
test('with defined cases', () {
var m = [
"a",
"abc",
"message digest",
"abcdefghijklmnopqrstuvwxyz",
"abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",
"1234567890123456789012345678901234567890123456789012345678901234"
"5678901234567890",
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz012345678901",
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz012345678901"
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz012345678901",
];
var r = [
"0bdc9d2d256b3ee9daae347be6f4dc835a467ffe",
"8eb208f7e05d987a9b044a8e98c6b087f15a0bfc",
"5d0689ef49d2fae572b881b123a85ffa21595f36",
"f71c27109c692c1b56bbdceb5b9d2865b3708dbc",
"12a053384a9c0c88e405a06c27dcf49ada62eb2b",
"b0e20b6e3116640286ed3a87a5713079b21f5189",
"9b752e45573d4b39f4dbd3323cab82bf63326bfb",
"1f931a136bf9f411832ab15bd11a8953111febef",
"53875380569546ee9738f5a59fdea9db521cb9ce",
];
for (var i = 0; i < m.length; ++i) {
expect(ripemd160sum(m[i]), r[i]);
}
});
test('with a millian "a"', () {
var m = List<int>.filled(1000000, 'a'.codeUnitAt(0));
var r = '52783243c1697bdbe16d37f97f68f08325dc1528';
expect(ripemd160.convert(m).hex(), r);
}, skip: true);
test('string: "Hello, world!"', () {
var m = "Hello, world!";
var r = "58262d1fbdbe4530d8865d3518c6d6e41002610f";
expect(ripemd160sum(m), r);
});
test('sink test', () {
final input =
"12345678901234567890123456789012345678901234567890123456789012345678901234567890"
.codeUnits;
final output = "9b752e45573d4b39f4dbd3323cab82bf63326bfb";
final sink = ripemd160.createSink();
expect(sink.closed, isFalse);
for (int i = 0; i < input.length; i += 48) {
sink.add(input.skip(i).take(48).toList());
}
expect(sink.digest().hex(), equals(output));
expect(sink.closed, isTrue);
expect(sink.digest().hex(), equals(output));
sink.reset();
sink.add(input);
sink.close();
expect(sink.closed, isTrue);
expect(sink.digest().hex(), equals(output));
});
});
}