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

Unified Diff: pkg/kernel/test/type_unification_test.dart

Issue 2528623002: Disable kernel unit tests. (Closed)
Patch Set: Created 4 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
Index: pkg/kernel/test/type_unification_test.dart
diff --git a/pkg/kernel/test/type_unification_test.dart b/pkg/kernel/test/type_unification_test.dart
deleted file mode 100644
index ed75d269930c87f0e2234ba0fd3624abb8c70e01..0000000000000000000000000000000000000000
--- a/pkg/kernel/test/type_unification_test.dart
+++ /dev/null
@@ -1,138 +0,0 @@
-// Copyright (c) 2016, 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.
-import 'package:kernel/type_algebra.dart';
-import 'package:test/test.dart';
-import 'type_parser.dart';
-import 'dart:io';
-
-final List<TestCase> testCases = <TestCase>[
- successCase('List<T>', 'List<String>', {'T': 'String'}),
- successCase('List<String>', 'List<T>', {'T': 'String'}),
- successCase('List<T>', 'List<T>', {'T': null}),
- successCase('List<S>', 'List<T>', {'S': 'T'}),
- successCase('List<S>', 'List<T>', {'T': 'S'}),
- successCase(
- 'List<S>', 'List<T>', {'S': 'T', 'T': null}), // Require left bias.
- failureCase('List<S>', 'List<T>', []),
-
- failureCase('List<T>', 'T', ['T']),
- failureCase('List<List<T>>', 'List<T>', ['T']),
- failureCase('Map<S, T>', 'Map<List<T>, List<S>>', ['T', 'S']),
-
- failureCase('Map<Map<S,String>, Map<int,S>>',
- 'Map<Map<int, S>, Map<S, String>>', ['S']),
- successCase('Map<Map<S, int>, Map<int, S>>', 'Map<Map<int, S>, Map<S, int>>',
- {'S': 'int'}),
- successCase('Map<Map<S, String>, Map<int, T>>',
- 'Map<Map<int, T>, Map<S, String>>', {'S': 'int', 'T': 'String'}),
-
- successCase('Map<S, List<T>>', 'Map<T, List<S>>', {'S': 'T'}),
- successCase('Map<S, T>', 'Map<S, List<S>>', {'T': 'List<S>'}),
- successCase('Map<S, T>', 'Map<S, List<S>>', {'T': 'List<S>', 'S': null}),
- successCase('Map<List<S>, T>', 'Map<T, List<S>>', {'T': 'List<S>'}),
- successCase(
- 'Map<List<S>, T>', 'Map<T, List<S>>', {'T': 'List<S>', 'S': null}),
-
- successCase('<E>(E) => E', '<T>(T) => T', {}),
- successCase('<E>(E, S) => E', '<T>(T, int) => T', {'S': 'int'}),
- failureCase('<E>(E, S) => E', '<T>(T, T) => T', ['S']),
- successCase(
- '<E>(E) => <T>(T) => Map<E,T>', '<E>(E) => <T>(T) => Map<E,T>', {}),
- successCase('<E>(E,_) => E', '<T>(T,_) => T', {}),
-
- successCase('(x:int,y:String) => int', '(y:String,x:int) => int', {}),
- successCase('<S,T>(x:S,y:T) => S', '<S,T>(y:T,x:S) => S', {}),
- successCase('(x:<T>(T)=>T,y:<S>(S)=>S) => int', '(y:<S>(S)=>S,x:<T>(T)=>T) => int', {}),
- successCase('(x:<T>(T)=>T,y:<S>(S,S,S)=>S) => int', '(y:<S>(S,S,S)=>S,x:<T>(T)=>T) => int', {}),
-];
-
-class TestCase {
- String type1;
- String type2;
- Iterable<String> quantifiedVariables;
- Map<String, String> expectedSubstitution; // Null if unification should fail.
-
- TestCase.success(this.type1, this.type2, this.expectedSubstitution) {
- quantifiedVariables = expectedSubstitution.keys;
- }
-
- TestCase.fail(this.type1, this.type2, this.quantifiedVariables);
-
- bool get shouldSucceed => expectedSubstitution != null;
-
- String toString() => '∃ ${quantifiedVariables.join(',')}. $type1 = $type2';
-}
-
-TestCase successCase(String type1, String type2, Map<String, String> expected,
- {bool debug: false}) {
- return new TestCase.success(type1, type2, expected);
-}
-
-TestCase failureCase(
- String type1, String type2, List<String> quantifiedVariables,
- {bool debug: false}) {
- return new TestCase.fail(type1, type2, quantifiedVariables);
-}
-
-int numFailures = 0;
-
-void reportFailure(TestCase testCase, String message) {
- ++numFailures;
- fail('$message in `$testCase`');
-}
-
-main() {
- for (TestCase testCase in testCases) {
- test('$testCase', () {
- var env = new LazyTypeEnvironment();
- var type1 = env.parse(testCase.type1);
- var type2 = env.parse(testCase.type2);
- var quantifiedVariables =
- testCase.quantifiedVariables.map(env.getTypeParameter).toSet();
- var substitution = unifyTypes(type1, type2, quantifiedVariables);
- if (testCase.shouldSucceed) {
- if (substitution == null) {
- reportFailure(testCase, 'Unification failed');
- } else {
- for (var key in testCase.expectedSubstitution.keys) {
- var typeParameter = env.getTypeParameter(key);
- if (testCase.expectedSubstitution[key] == null) {
- if (substitution.containsKey(key)) {
- var actualType = substitution[typeParameter];
- reportFailure(
- testCase,
- 'Incorrect substitution '
- '`$key = $actualType` should be unbound');
- }
- } else {
- var expectedType = env.parse(testCase.expectedSubstitution[key]);
- var actualType = substitution[typeParameter];
- if (actualType != expectedType) {
- reportFailure(
- testCase,
- 'Incorrect substitution '
- '`$key = $actualType` should be `$key = $expectedType`');
- }
- }
- }
- var boundTypeVariables = testCase.expectedSubstitution.keys
- .where((name) => testCase.expectedSubstitution[name] != null);
- if (substitution.length != boundTypeVariables.length) {
- reportFailure(
- testCase,
- 'Substituted `${substitution.keys.join(',')}` '
- 'but should only substitute `${boundTypeVariables.join(',')}`');
- }
- }
- } else {
- if (substitution != null) {
- reportFailure(testCase, 'Unification was supposed to fail');
- }
- }
- });
- }
- if (numFailures > 0) {
- exit(1);
- }
-}
« no previous file with comments | « pkg/kernel/test/type_subtype_test_disabled.dart ('k') | pkg/kernel/test/type_unification_test_disabled.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698