twonly-app-dependencies/hashlib/test/sha384_test.dart
2026-02-07 23:12:41 +01:00

79 lines
2.8 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 = {
"": "38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c"
"0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95b",
"a": "54a59b9f22b0b80880d8427e548b7c23abd873486e1f035dce"
"9cd697e85175033caa88e6d57bc35efae0b5afd3145f31",
"abc": "cb00753f45a35e8bb5a03d699ac65007272c32ab0eded1631a"
"8b605a43ff5bed8086072ba1e7cc2358baeca134c825a7",
"abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq":
"3391fdddfc8dc7393707a65b1b4709397cf8b1d162af05abfe"
"8f450de5f36bc6b0455a8520bc4e6f5fe95b1fe3c8452b",
"The quick brown fox jumps over the lazy dog":
"ca737f1014a48f4c0b6dd43cb177b0afd9e5169367544c4940"
"11e3317dbf9a509cb1e5dc1e85a941bbee3d7f2afbc9b1",
"The quick brown fox jumps over the lazy cog":
"098cea620b0978caa5f0befba6ddcf22764bea977e1c70b348"
"3edfdf1de25f4b40d6cea3cadf00f809d422feb1f0161b",
List.filled(512, "a").join():
"e685ba7acf4eedd1742f2a97c845e7825982d840623525e491"
"40680fdde0f2631e5fce9dfcfb42ba7b27c9eb35a62b87",
List.filled(128, "a").join():
"edb12730a366098b3b2beac75a3bef1b0969b15c48e2163c23"
"d96994f8d1bef760c7e27f3c464d3829f56c0d53808b0b",
List.filled(513, "a").join():
"c3f1d47c5dad5c3b8cc1242da14220af7f9036acf98369be3c"
"c102b069476a9b3e50b9a131756396c8c267dce06a35f0",
List.filled(511, "a").join():
"db100a1eed3842c61d73064b62543cd4531dafa8bfecf6f27d"
"cfdebbaf60ea14563ea1b486e4f6b9a14fcb0dac05c5f2",
// List.filled(1000000, "a").join():
// "9d0e1809716474cb086e834e310a4a1ced149e9c00f2485279"
// "72cec5704c2a5b07b8b3dc38ecc4ebae97ddd87f3d8985",
};
void main() {
group('SHA384 test', () {
test('with empty string', () {
expect(sha384sum(""), tests[""]);
});
test('with single letter', () {
expect(sha384sum("a"), tests["a"]);
});
test('with few letters', () {
expect(sha384sum("abc"), tests["abc"]);
});
test('with string of length 511', () {
var key = tests.keys.firstWhere((x) => x.length == 511);
var value = tests[key]!;
expect(sha384sum(key), value);
});
test('with known cases', () {
tests.forEach((key, value) {
expect(sha384sum(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 sha384.bind(stream).first;
expect(result.hex(), entry.value);
}
});
});
}