173 lines
4.9 KiB
Dart
173 lines
4.9 KiB
Dart
import 'package:base_codecs/base_codecs.dart' as base_codecs;
|
|
import 'package:hashlib_codecs/hashlib_codecs.dart';
|
|
import 'package:test/test.dart';
|
|
|
|
import './utils.dart';
|
|
|
|
void main() {
|
|
group('Test base16', () {
|
|
test('parameter overrides', () {
|
|
var a = toHex([12]);
|
|
expect(a, "0c");
|
|
a = toHex(
|
|
[12],
|
|
codec: Base16Codec.upper,
|
|
);
|
|
expect(a, "0C");
|
|
a = toHex(
|
|
[12],
|
|
codec: Base16Codec.lower,
|
|
upper: true,
|
|
);
|
|
expect(a, "0c");
|
|
});
|
|
|
|
test('encoding <-> decoding', () {
|
|
for (int i = 0; i < 100; ++i) {
|
|
var b = randomBytes(i);
|
|
var r = toHex(b);
|
|
expect(fromHex(r), equals(b), reason: 'length $i');
|
|
}
|
|
});
|
|
|
|
test('encoding <-> decoding uppercase', () {
|
|
for (int i = 0; i < 100; ++i) {
|
|
var b = randomBytes(i);
|
|
var r = toHex(b, upper: true);
|
|
expect(fromHex(r), equals(b), reason: 'length $i');
|
|
}
|
|
});
|
|
|
|
group("encoding", () {
|
|
test('[] => empty string', () {
|
|
expect(toHex([]), "");
|
|
});
|
|
test('[5] => 05', () {
|
|
expect(toHex([5]), "05");
|
|
});
|
|
test('[12] => 0c', () {
|
|
expect(toHex([12]), "0c");
|
|
});
|
|
test('[16] => 10', () {
|
|
expect(toHex([16]), "10");
|
|
});
|
|
test('[0,0,0] => 000000 ', () {
|
|
var inp = [0, 0, 0];
|
|
var out = "000000";
|
|
expect(toHex(inp), equals(out));
|
|
});
|
|
test('random', () {
|
|
for (int i = 0; i < 100; ++i) {
|
|
var b = randomBytes(i);
|
|
var hex = b.map((x) => x.toRadixString(16).padLeft(2, '0')).join();
|
|
expect(toHex(b), hex, reason: 'length $i');
|
|
}
|
|
});
|
|
group('buffer', () {
|
|
var buf = [
|
|
244, 11, 21, 63, 222, 56, 63, 111, 57, 64, 22, 56, 32, //
|
|
55, 115, 178, 138, 230, 251
|
|
];
|
|
var lowerHex = "f40b153fde383f6f39401638203773b28ae6fb";
|
|
var upperHex = "F40B153FDE383F6F39401638203773B28AE6FB";
|
|
test("lower", () {
|
|
expect(toHex(buf), lowerHex);
|
|
});
|
|
test("upper", () {
|
|
expect(toHex(buf, upper: true), upperHex);
|
|
});
|
|
});
|
|
});
|
|
|
|
group("decoding", () {
|
|
test('empty string => []', () {
|
|
expect(fromHex(""), []);
|
|
});
|
|
test('5 => [5]', () {
|
|
expect(fromHex("5"), [5]);
|
|
});
|
|
test('c => [12]', () {
|
|
expect(fromHex("c"), [12]);
|
|
});
|
|
test('0c => [12]', () {
|
|
expect(fromHex("0c"), [12]);
|
|
});
|
|
test('00c => [0, 12]', () {
|
|
expect(fromHex("00c"), [0, 12]);
|
|
});
|
|
test('000c => [0, 12]', () {
|
|
expect(fromHex("000c"), [0, 12]);
|
|
});
|
|
test('0000c => [0, 0, 12]', () {
|
|
expect(fromHex("0000c"), [0, 0, 12]);
|
|
});
|
|
test('000000 => [0,0,0]', () {
|
|
var inp = [0, 0, 0];
|
|
var out = "000000";
|
|
expect(fromHex(out), equals(inp));
|
|
});
|
|
test('random', () {
|
|
for (int i = 0; i < 100; ++i) {
|
|
var b = randomBytes(i);
|
|
var hex = b.map((x) => x.toRadixString(16).padLeft(2, '0')).join();
|
|
expect(fromHex(hex), equals(b), reason: 'length $i');
|
|
}
|
|
});
|
|
|
|
group('buffer', () {
|
|
var buf = [
|
|
244, 11, 21, 63, 222, 56, 63, 111, 57, 64, 22, 56, 32, //
|
|
55, 115, 178, 138, 230, 251
|
|
];
|
|
var lowerHex = "f40b153fde383f6f39401638203773b28ae6fb";
|
|
var upperHex = "F40B153FDE383F6F39401638203773B28AE6FB";
|
|
test("lower", () {
|
|
expect(fromHex(lowerHex), equals(buf));
|
|
});
|
|
test("upper", () {
|
|
expect(fromHex(upperHex), equals(buf));
|
|
});
|
|
});
|
|
group('with invalid chars', () {
|
|
test('Error', () {
|
|
expect(() => fromHex("Error"), throwsFormatException);
|
|
});
|
|
test('-10', () {
|
|
expect(() => fromHex("-10"), throwsFormatException);
|
|
});
|
|
test('something', () {
|
|
expect(() => fromHex("something"), throwsFormatException);
|
|
});
|
|
});
|
|
});
|
|
|
|
group('compare against package: base_codecs', () {
|
|
test('encoding', () {
|
|
for (int i = 0; i < 100; ++i) {
|
|
var b = randomBytes(i);
|
|
var hashlib = toHex(b, upper: true);
|
|
var base = base_codecs.base16.encode(b);
|
|
expect(base, hashlib, reason: 'length $i');
|
|
}
|
|
});
|
|
test('decoding (lowercase)', () {
|
|
for (int i = 0; i < 100; ++i) {
|
|
var b = randomBytes(i);
|
|
var h = toHex(b);
|
|
var hashlib = fromHex(h);
|
|
var base = base_codecs.base16.decode(h);
|
|
expect(base, hashlib, reason: 'length $i');
|
|
}
|
|
});
|
|
test('decoding (uppercase)', () {
|
|
for (int i = 0; i < 100; ++i) {
|
|
var b = randomBytes(i);
|
|
var h = toHex(b, upper: true);
|
|
var hashlib = fromHex(h);
|
|
var base = base_codecs.base16.decode(h);
|
|
expect(base, hashlib, reason: 'length $i');
|
|
}
|
|
});
|
|
});
|
|
});
|
|
}
|