| Index: test/hash_code_test.dart
|
| diff --git a/test/hash_code_test.dart b/test/hash_code_test.dart
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..0f1cbe06550f33d274f8ff3132baa91f2cf65eea
|
| --- /dev/null
|
| +++ b/test/hash_code_test.dart
|
| @@ -0,0 +1,175 @@
|
| +#!/usr/bin/env dart
|
| +// Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
|
| +// for details. All rights reserved. Use of this source code is governed by a
|
| +// BSD-style license that can be found in the LICENSE file.
|
| +
|
| +library hash_code_tests;
|
| +
|
| +import 'dart:typed_data';
|
| +
|
| +import 'package:fixnum/fixnum.dart';
|
| +import 'package:protobuf/protobuf.dart';
|
| +import 'package:unittest/unittest.dart';
|
| +
|
| +import '../out/protos/google/protobuf/unittest.pb.dart';
|
| +
|
| +void main() {
|
| + test('testHashCodeEmptyMessage', () {
|
| + var m1 = new TestAllTypes();
|
| + var m2 = new TestAllTypes();
|
| + expect(m1.hashCode, m2.hashCode);
|
| + });
|
| +
|
| + test('testHashCodeOptionalInt32', () {
|
| + var m1 = new TestAllTypes()..optionalInt32 = 42;
|
| + var m2 = new TestAllTypes()..optionalInt32 = 42;
|
| + expect(m1.hashCode, m2.hashCode);
|
| +
|
| + m1.optionalInt32 = 43;
|
| + expect(m1.hashCode, isNot(m2.hashCode));
|
| +
|
| + m2.optionalInt32 = 43;
|
| + expect(m1.hashCode, m2.hashCode);
|
| + });
|
| +
|
| + test('testHashCodeOptionalInt64', () {
|
| + var m1 = new TestAllTypes()..optionalInt64 = new Int64(42);
|
| + var m2 = new TestAllTypes()..optionalInt64 = new Int64(42);
|
| + expect(m1.hashCode, m2.hashCode);
|
| +
|
| + m1.optionalInt64 = new Int64(43);
|
| + expect(m1.hashCode, isNot(m2.hashCode));
|
| +
|
| + m2.optionalInt64 = new Int64(43);
|
| + expect(m1.hashCode, m2.hashCode);
|
| + });
|
| +
|
| + test('testHashCodeOptionalString', () {
|
| + var m1 = new TestAllTypes()..optionalString = "Dart";
|
| + var m2 = new TestAllTypes()..optionalString = "Dart";
|
| + expect(m1.hashCode, m2.hashCode);
|
| +
|
| + m1.optionalString = "JavaScript";
|
| + expect(m1.hashCode, isNot(m2.hashCode));
|
| +
|
| + m2.optionalString = "JavaScript";
|
| + expect(m1.hashCode, m2.hashCode);
|
| + });
|
| +
|
| + test('testHashCodeOptionalEnum', () {
|
| + var m1 = new TestAllTypes()
|
| + ..optionalNestedEnum = TestAllTypes_NestedEnum.BAR;
|
| + var m2 = new TestAllTypes()
|
| + ..optionalNestedEnum = TestAllTypes_NestedEnum.BAR;
|
| + expect(m1.hashCode, m2.hashCode);
|
| +
|
| + m1.optionalNestedEnum = TestAllTypes_NestedEnum.BAZ;
|
| + expect(m1.hashCode, isNot(m2.hashCode));
|
| +
|
| + m2.optionalNestedEnum = TestAllTypes_NestedEnum.BAZ;
|
| + expect(m1.hashCode, m2.hashCode);
|
| + });
|
| +
|
| + test('testHashCodeRepeatedInt32', () {
|
| + var m1 = new TestAllTypes();
|
| + var m2 = new TestAllTypes();
|
| + m1.repeatedInt32.add(42);
|
| + m2.repeatedInt32.add(42);
|
| + expect(m1.hashCode, m2.hashCode);
|
| + });
|
| +
|
| + test('testHashCodeRepeatedInt64', () {
|
| + var m1 = new TestAllTypes();
|
| + var m2 = new TestAllTypes();
|
| + m1.repeatedInt32.add(42);
|
| + m2.repeatedInt32.add(42);
|
| + expect(m1.hashCode, m2.hashCode);
|
| +
|
| + m1.repeatedInt32.add(43);
|
| + expect(m1.hashCode, isNot(m2.hashCode));
|
| +
|
| + m2.repeatedInt32.add(43);
|
| + expect(m1.hashCode, m2.hashCode);
|
| +
|
| + m1.repeatedInt32.clear();
|
| + expect(m1.hashCode, isNot(m2.hashCode));
|
| +
|
| + m2.repeatedInt32.clear();
|
| + expect(m1.hashCode, m2.hashCode);
|
| + });
|
| +
|
| + test('testHashCodeRepeatedString', () {
|
| + var m1 = new TestAllTypes();
|
| + var m2 = new TestAllTypes();
|
| + m1.repeatedString.add("Dart");
|
| + m2.repeatedString.add("Dart");
|
| + expect(m1.hashCode, m2.hashCode);
|
| +
|
| + m1.repeatedString.add("JavaScript");
|
| + expect(m1.hashCode, isNot(m2.hashCode));
|
| +
|
| + m2.repeatedString.add("JavaScript");
|
| + expect(m1.hashCode, m2.hashCode);
|
| +
|
| + m1.repeatedString.clear();
|
| + expect(m1.hashCode, isNot(m2.hashCode));
|
| +
|
| + m2.repeatedString.clear();
|
| + expect(m1.hashCode, m2.hashCode);
|
| + });
|
| +
|
| + test('testHashCodeRepeatedEnum', () {
|
| + var m1 = new TestAllTypes();
|
| + var m2 = new TestAllTypes();
|
| + m1.repeatedNestedEnum.add(TestAllTypes_NestedEnum.BAR);
|
| + m2.repeatedNestedEnum.add(TestAllTypes_NestedEnum.BAR);
|
| + expect(m1.hashCode, m2.hashCode);
|
| +
|
| + m1.repeatedNestedEnum.add(TestAllTypes_NestedEnum.BAZ);
|
| + expect(m1.hashCode, isNot(m2.hashCode));
|
| +
|
| + m2.repeatedNestedEnum.add(TestAllTypes_NestedEnum.BAZ);
|
| + expect(m1.hashCode, m2.hashCode);
|
| + });
|
| +
|
| + test('testHashCodeUnknownFields', () {
|
| + var m1 = new TestAllTypes();
|
| + var m2 = new TestAllTypes();
|
| + m1.unknownFields.mergeVarintField(12345, new Int64(123));
|
| + m2.unknownFields.mergeVarintField(12345, new Int64(123));
|
| + expect(m1.hashCode, m2.hashCode);
|
| + });
|
| +
|
| + test('testHashCodeCombined', () {
|
| + var m1 = new TestAllTypes()
|
| + ..optionalInt32 = 42
|
| + ..optionalInt64 = new Int64(42)
|
| + ..optionalString = "Dart"
|
| + ..optionalNestedEnum = TestAllTypes_NestedEnum.BAR;
|
| + var m2 = new TestAllTypes()
|
| + ..optionalInt32 = 42
|
| + ..optionalInt64 = new Int64(42)
|
| + ..optionalString = "Dart"
|
| + ..optionalNestedEnum = TestAllTypes_NestedEnum.BAR;
|
| + expect(m1.hashCode, m2.hashCode);
|
| +
|
| + m1.repeatedInt32..add(42)..add(43);
|
| + m2.repeatedInt32..add(42)..add(43);
|
| + m1.repeatedInt64..add(new Int64(42))..add(new Int64(43));
|
| + m2.repeatedInt64..add(new Int64(42))..add(new Int64(43));
|
| + m1.repeatedString..add("Dart")..add("JavaScript");
|
| + m2.repeatedString..add("Dart")..add("JavaScript");
|
| + m1.repeatedNestedEnum
|
| + ..add(TestAllTypes_NestedEnum.BAR)
|
| + ..add(TestAllTypes_NestedEnum.BAZ);
|
| + m2.repeatedNestedEnum
|
| + ..add(TestAllTypes_NestedEnum.BAR)
|
| + ..add(TestAllTypes_NestedEnum.BAZ);
|
| + expect(m1.hashCode, m2.hashCode);
|
| +
|
| + m1.unknownFields.mergeVarintField(12345, new Int64(123));
|
| + m2.unknownFields.mergeVarintField(12345, new Int64(123));
|
| + expect(m1.hashCode, m2.hashCode);
|
| + expect(m1.hashCode, m2.hashCode);
|
| + });
|
| +}
|
|
|