blob: 9beb06d8dc7ce3ca583cca2109174a07876a2459 [file] [log] [blame]
// 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.
import 'dart:typed_data';
import 'package:lib.app.dart/logging.dart';
import 'package:fidl_fuchsia_ledger/fidl.dart' as ledger;
import 'package:sledge/sledge.dart';
import 'package:test/test.dart';
void main() {
setupLogger();
test('Create SledgePageId objects', () {
final a = new SledgePageId();
final b = new SledgePageId('');
final c = new SledgePageId('foo');
final d = new SledgePageId(
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ');
expect(a.id.id, equals(b.id.id));
expect(SledgePageId.pageIsManagedBySledge(a.id), equals(true));
expect(SledgePageId.pageIsManagedBySledge(b.id), equals(true));
expect(SledgePageId.pageIsManagedBySledge(c.id), equals(true));
expect(SledgePageId.pageIsManagedBySledge(d.id), equals(true));
});
test('pageIsManagedBySledge detects PageIds not managed by Sledge', () {
final bytes = new Uint8List(16);
final pageId = new ledger.PageId(id: bytes);
expect(SledgePageId.pageIsManagedBySledge(pageId), equals(false));
});
test('make sure PageIds are not accidentely updated', () {
// The goal of this test is to detect accidental changes in the encoding of
// the SledgePageId, because if the encoding changes then clients of Sledge
// won't be able to read their data back.
// The format of the expected value is described in SledgePageId.
final sledgePageId = new SledgePageId('foo');
expect(
sledgePageId.id.id,
equals([
115, // 's'
108, // 'l'
101, // 'e'
100, // 'd'
103, // 'g'
101, // 'e'
51, // '3'
95, // '_'
44,
38,
180,
107,
104,
255,
198,
143
]));
});
}