77 lines
2.6 KiB
Dart
77 lines
2.6 KiB
Dart
// Copyright (c) 2023, Sudipto Chandra
|
|
// All rights reserved. Check LICENSE file for details.
|
|
|
|
import 'dart:math';
|
|
|
|
import 'package:hashlib/hashlib.dart';
|
|
import 'package:test/test.dart';
|
|
|
|
final tests = {
|
|
"": "6ed0dd02806fa89e25de060c19d3ac86cabb87d6a0ddd05c333b84f4",
|
|
"a": "d5cdb9ccc769a5121d4175f2bfdd13d6310e0d3d361ea75d82108327",
|
|
"abc": "4634270f707b6a54daae7530460842e20e37ed265ceee9a43e8924aa",
|
|
"abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq":
|
|
"e5302d6d54bb242275d1e7622d68df6eb02dedd13f564c13dbda2174",
|
|
"The quick brown fox jumps over the lazy dog":
|
|
"944cd2847fb54558d4775db0485a50003111c8e5daa63fe722c6aa37",
|
|
"The quick brown fox jumps over the lazy cog":
|
|
"2b9d6565a7e40f780ba8ab7c8dcf41e3ed3b77997f4c55aa987eede5",
|
|
List.filled(112, "a").join():
|
|
"79b41fef2a0439d2705724a67615f7bcbcd2bf5664a7774b80818eb6",
|
|
List.filled(512, "a").join():
|
|
"057bab73fa47ac3e597a34d02c1e285e2d5d8a2e90c9079f549b4af6",
|
|
List.filled(128, "a").join():
|
|
"261b94bcba554264b3b738e9e09e7dc68ac8e0b4c8517fe9bb7c3617",
|
|
List.filled(513, "a").join():
|
|
"502ec9656e1e0b96f9a2699c04cec265edc690b729c45037c6b37a00",
|
|
List.filled(511, "a").join():
|
|
"bd0452a57045c857de05b1c1d94fb49624b00ceaf0ec4c0d4d656a89",
|
|
// List.filled(1000000, "a").join():
|
|
// "37ab331d76f0d36de422bd0edeb22a28accd487b7a8453ae965dd287",
|
|
};
|
|
|
|
void main() {
|
|
group('SHA512224 test', () {
|
|
test('with empty string', () {
|
|
expect(sha512t224sum(""), tests[""]);
|
|
});
|
|
|
|
test('with single letter', () {
|
|
expect(sha512t224sum("a"), tests["a"]);
|
|
});
|
|
|
|
test('with few letters', () {
|
|
expect(sha512t224sum("abc"), tests["abc"]);
|
|
});
|
|
|
|
test('with string of length 511', () {
|
|
var key = tests.keys.firstWhere((x) => x.length == 511);
|
|
var value = tests[key]!;
|
|
expect(sha512t224sum(key), value);
|
|
});
|
|
|
|
test('known cases', () {
|
|
tests.forEach((key, value) {
|
|
// print(toHex(crypto.sha512224.convert(toBytes(key)).bytes));
|
|
expect(sha512t224sum(key), value);
|
|
});
|
|
});
|
|
|
|
test('with known cases', () {
|
|
tests.forEach((key, value) {
|
|
expect(sha512t224sum(key), value);
|
|
});
|
|
});
|
|
|
|
test('with stream', () async {
|
|
for (final entry in tests.entries) {
|
|
final stream = Stream.fromIterable(
|
|
List.generate(1 + (entry.key.length >>> 3), (i) => i << 3))
|
|
.map((e) => entry.key.substring(e, min(entry.key.length, e + 8)))
|
|
.map((s) => s.codeUnits);
|
|
final result = await sha512t224.bind(stream).first;
|
|
expect(result.hex(), entry.value);
|
|
}
|
|
});
|
|
});
|
|
}
|