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

Side by Side Diff: lib/src/backend/platform_selector/evaluator.dart

Issue 1004013002: Add support for evaluating platform selectors. (Closed) Base URL: git@github.com:dart-lang/unittest@master
Patch Set: Code review changes Created 5 years, 9 months 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 unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright (c) 2015, 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 library unittest.backend.platform_selector.evaluator;
6
7 import 'package:source_span/source_span.dart';
8
9 import '../operating_system.dart';
10 import '../test_platform.dart';
11 import 'ast.dart';
12 import 'visitor.dart';
13
14 /// A visitor for evaluating platform selectors against a specific
15 /// [TestPlatform] and [OperatingSystem].
16 class Evaluator implements Visitor<bool> {
17 /// The platform to test against.
18 final TestPlatform _platform;
19
20 /// The operating system to test against.
21 final OperatingSystem _os;
22
23 Evaluator(this._platform, {OperatingSystem os})
24 : _os = os == null ? OperatingSystem.none : os;
25
26 bool visitVariable(VariableNode node) {
27 if (node.name == _platform.identifier) return true;
28 if (node.name == _os.name) return true;
29
30 switch (node.name) {
31 case "dart-vm": return _platform.isDartVm;
32 case "browser": return _platform.isBrowser;
33 case "js": return _platform.isJS;
34 case "blink": return _platform.isBlink;
35 case "posix": return _os.isPosix;
36 default: return false;
37 }
38 }
39
40 bool visitNot(NotNode node) => !node.child.accept(this);
41
42 bool visitOr(OrNode node) =>
43 node.left.accept(this) || node.right.accept(this);
44
45 bool visitAnd(AndNode node) =>
46 node.left.accept(this) && node.right.accept(this);
47
48 bool visitConditional(ConditionalNode node) => node.condition.accept(this)
49 ? node.whenTrue.accept(this)
50 : node.whenFalse.accept(this);
51 }
OLDNEW
« no previous file with comments | « lib/src/backend/platform_selector/ast.dart ('k') | lib/src/backend/platform_selector/visitor.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698