| // Copyright 2018 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| // ignore_for_file: implementation_imports |
| import 'dart:typed_data'; |
| |
| import 'package:lib.app.dart/logging.dart'; |
| import 'package:sledge/src/document/values/compressor.dart'; |
| import 'package:sledge/src/document/values/key_value.dart'; |
| |
| import 'package:test/test.dart'; |
| |
| import 'matchers.dart'; |
| |
| void main() { |
| setupLogger(); |
| |
| group('Correct compression', () { |
| test('KeyValue', () { |
| final c = new Compressor(), c1 = new Compressor(); |
| final kv = new KeyValue( |
| new Uint8List.fromList([1, 2, 3]), new Uint8List.fromList([4, 5])); |
| final kv2 = c.uncompressKeyInEntry(c1.compressKeyInEntry(kv)); |
| expect(kv2, new KeyValueMatcher(kv)); |
| }); |
| |
| test('Key', () { |
| final c = new Compressor(); |
| final key = new Uint8List.fromList([3, 8, 2]); |
| final keyUc = c.uncompressKey(c.compressKey(key)); |
| expect(keyUc, equals(key)); |
| |
| final keyOth = new Uint8List.fromList([3]); |
| final keyOthUc = c.uncompressKey(c.compressKey(keyOth)); |
| expect(keyOthUc, equals(keyOth)); |
| }); |
| }); |
| |
| group('Exceptions', () { |
| test('Uncompress new key', () { |
| final c = new Compressor(), c1 = new Compressor(); |
| expect( |
| () => c.uncompressKey(c1.compressKey(new Uint8List.fromList([1, 2]))), |
| throwsInternalError); |
| }); |
| |
| test('Uncompress short key', () { |
| final c = new Compressor(); |
| expect(() => c.uncompressKey(new Uint8List.fromList([1, 2])), |
| throwsInternalError); |
| }); |
| |
| test('Uncompress key value with wrong key length', () { |
| final c = new Compressor(); |
| final kv = new KeyValue( |
| new Uint8List.fromList([1, 2, 3]), new Uint8List.fromList([4, 5])); |
| final kvC = c.compressKeyInEntry(kv); |
| kvC.value.buffer.asByteData().setUint64(0, 6); |
| expect(() => c.uncompressKeyInEntry(kvC), throwsInternalError); |
| }); |
| }); |
| } |