| OLD | NEW |
| (Empty) | |
| 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. |
| 4 |
| 5 import 'package:observatory/dominator_tree.dart'; |
| 6 import 'package:unittest/unittest.dart'; |
| 7 |
| 8 void main() { |
| 9 test('small example from [Lenguaer & Tarjan 1979]', smallTest); |
| 10 test('non-flowgraph', nonFlowgraph); |
| 11 } |
| 12 |
| 13 void smallTest() { |
| 14 var g = { |
| 15 'R': ['A', 'B', 'C'], |
| 16 'A': ['D'], |
| 17 'B': ['A', 'D', 'E'], |
| 18 'C': ['F', 'G'], |
| 19 'D': ['L'], |
| 20 'E': ['H'], |
| 21 'F': ['I'], |
| 22 'G': ['I', 'J'], |
| 23 'H': ['E', 'K'], |
| 24 'I': ['K'], |
| 25 'J': ['I'], |
| 26 'K': ['I', 'R'], |
| 27 'L': ['H'], |
| 28 }; |
| 29 var d = new Dominator(); |
| 30 for (String u in g.keys) { |
| 31 d.addEdges(u, g[u]); |
| 32 } |
| 33 d.computeDominatorTree('R'); |
| 34 expect(d.dominator('I'), equals('R')); |
| 35 expect(d.dominator('K'), equals('R')); |
| 36 expect(d.dominator('C'), equals('R')); |
| 37 expect(d.dominator('H'), equals('R')); |
| 38 expect(d.dominator('E'), equals('R')); |
| 39 expect(d.dominator('A'), equals('R')); |
| 40 expect(d.dominator('D'), equals('R')); |
| 41 expect(d.dominator('B'), equals('R')); |
| 42 |
| 43 expect(d.dominator('F'), equals('C')); |
| 44 expect(d.dominator('G'), equals('C')); |
| 45 expect(d.dominator('J'), equals('G')); |
| 46 expect(d.dominator('L'), equals('D')); |
| 47 expect(d.dominator('R'), isNull); |
| 48 } |
| 49 |
| 50 void nonFlowgraph() { |
| 51 var d = new Dominator(); |
| 52 d.addEdges('A', ['B']); |
| 53 expect(() => d.computeDominatorTree('B'), throwsStateError); |
| 54 } |
| OLD | NEW |