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

Unified Diff: runtime/bin/vmservice/observatory/test/dominator_tree_test.dart

Issue 777693002: Compute retained size for every object, using dominator trees. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 6 years 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: runtime/bin/vmservice/observatory/test/dominator_tree_test.dart
===================================================================
--- runtime/bin/vmservice/observatory/test/dominator_tree_test.dart (revision 0)
+++ runtime/bin/vmservice/observatory/test/dominator_tree_test.dart (working copy)
@@ -0,0 +1,54 @@
+// Copyright (c) 2014, 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:observatory/dominator_tree.dart';
+import 'package:unittest/unittest.dart';
+
+void main() {
+ test('small example from [Lenguaer & Tarjan 1979]', smallTest);
+ test('non-flowgraph', nonFlowgraph);
+}
+
+void smallTest() {
+ var g = {
+ 'R': ['A', 'B', 'C'],
+ 'A': ['D'],
+ 'B': ['A', 'D', 'E'],
+ 'C': ['F', 'G'],
+ 'D': ['L'],
+ 'E': ['H'],
+ 'F': ['I'],
+ 'G': ['I', 'J'],
+ 'H': ['E', 'K'],
+ 'I': ['K'],
+ 'J': ['I'],
+ 'K': ['I', 'R'],
+ 'L': ['H'],
+ };
+ var d = new Dominator();
+ for (String u in g.keys) {
+ d.addEdges(u, g[u]);
+ }
+ d.computeDominatorTree('R');
+ expect(d.dominator('I'), equals('R'));
+ expect(d.dominator('K'), equals('R'));
+ expect(d.dominator('C'), equals('R'));
+ expect(d.dominator('H'), equals('R'));
+ expect(d.dominator('E'), equals('R'));
+ expect(d.dominator('A'), equals('R'));
+ expect(d.dominator('D'), equals('R'));
+ expect(d.dominator('B'), equals('R'));
+
+ expect(d.dominator('F'), equals('C'));
+ expect(d.dominator('G'), equals('C'));
+ expect(d.dominator('J'), equals('G'));
+ expect(d.dominator('L'), equals('D'));
+ expect(d.dominator('R'), isNull);
+}
+
+void nonFlowgraph() {
+ var d = new Dominator();
+ d.addEdges('A', ['B']);
+ expect(() => d.computeDominatorTree('B'), throwsStateError);
+}

Powered by Google App Engine
This is Rietveld 408576698