Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(177)

Unified Diff: test/hash_code_test.dart

Issue 63173006: Add test for protocol buffer hash code (Closed) Base URL: https://github.com/dart-lang/dart-protoc-plugin.git@master
Patch Set: Addressed review comments Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « test/all_tests.dart ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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);
+ });
+}
« no previous file with comments | « test/all_tests.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698