blob: 16581bd4b71a6fe964faddec0ef72618871f2e6a [file] [log] [blame]
// 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.
//
// @dart = 2.9
import 'dart:developer';
import 'package:expect/expect.dart';
// Test that the default tag is set.
testDefault() {
Expect.isTrue(identical(UserTag.defaultTag, getCurrentTag()));
}
// Test that the label property matches the constructor.
void testLabel() {
var label = 'Hello World';
var tag = new UserTag(label);
Expect.equals(label, tag.label);
}
// Test that we canonicalize UserTag by name.
void testCanonicalize(tag1) {
var label = 'Global Tag';
var tag = new UserTag(label);
Expect.isTrue(identical(tag, tag1));
var defaultLabel = 'Default';
var defaultTag = new UserTag(defaultLabel);
Expect.isTrue(identical(UserTag.defaultTag, defaultTag));
}
// Test that we made the tag current.
void testMakeCurrent(tag) {
tag.makeCurrent();
Expect.isTrue(identical(tag, getCurrentTag()));
}
// Test that we reach a limit of tags an exception is thrown.
void testExhaust() {
var i = 0;
while (true) {
var label = i.toString();
var tag = new UserTag(label);
i++;
}
}
var callerTag = new UserTag('caller');
var calleeTag = new UserTag('callee');
void callee() {
var old = calleeTag.makeCurrent();
Expect.isTrue(identical(calleeTag, getCurrentTag()));
old.makeCurrent();
}
void testCallerPattern() {
Expect.isTrue(identical(UserTag.defaultTag, getCurrentTag()));
var old = callerTag.makeCurrent();
Expect.isTrue(identical(callerTag, getCurrentTag()));
callee();
Expect.isTrue(identical(callerTag, getCurrentTag()));
old.makeCurrent();
Expect.isTrue(identical(UserTag.defaultTag, getCurrentTag()));
}
main() {
testDefault();
testCallerPattern();
var label = 'Global Tag';
var tag = new UserTag(label);
testLabel();
testCanonicalize(tag);
for (var i = 0; i < 2000; i++) {
testMakeCurrent(tag);
}
Expect.throws(testExhaust);
}