blob: fe33175a2aa7b53f386851661e84c78b8737f0b4 [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.
//
import 'dart:developer';
import 'package:expect/expect.dart';
testGauge1() {
var gauge = new Gauge('test', 'alpha bravo', 0.0, 100.0);
Expect.equals(0.0, gauge.min);
Expect.equals(0.0, gauge.value);
Expect.equals(100.0, gauge.max);
Expect.equals('test', gauge.name);
Expect.equals('alpha bravo', gauge.description);
gauge.value = 44.0;
Expect.equals(44.0, gauge.value);
// Test setting below min.
gauge.value = -1.0;
Expect.equals(0.0, gauge.value);
// Test setting above max.
gauge.value = 101.0;
Expect.equals(100.0, gauge.value);
}
testGauge2() {
var gauge = new Gauge('test', 'alpha bravo', 1.0, 2.0);
Expect.equals(1.0, gauge.min);
Expect.equals(2.0, gauge.max);
Expect.equals(gauge.min, gauge.value);
Expect.equals('test', gauge.name);
Expect.equals('alpha bravo', gauge.description);
Expect.throws(() {
// min argument > max argument .
gauge = new Gauge('test', 'alpha bravo', 2.0, 1.0);
});
Expect.throws(() {
// min argument == max argument .
gauge = new Gauge('test', 'alpha bravo', 1.0, 1.0);
});
Expect.throws(() {
// min argument is null
gauge = new Gauge('test', 'alpha bravo', null, 1.0);
});
Expect.throws(() {
// min argument is not a double
gauge = new Gauge('test', 'alpha bravo', 'string' as dynamic, 1.0);
});
Expect.throws(() {
// max argument is null
gauge = new Gauge('test', 'alpha bravo', 1.0, null);
});
}
testCounter() {
var counter = new Counter('test', 'alpha bravo');
Expect.equals(0.0, counter.value);
Expect.equals('test', counter.name);
Expect.equals('alpha bravo', counter.description);
counter.value = 1.0;
Expect.equals(1.0, counter.value);
}
class CustomCounter extends Counter {
CustomCounter(name, description) : super(name, description);
// User provided getter.
double get value => 77.0;
}
testCustomCounter() {
var counter = new CustomCounter('test', 'alpha bravo');
Expect.equals(77.0, counter.value);
Expect.equals('test', counter.name);
Expect.equals('alpha bravo', counter.description);
// Should have no effect.
counter.value = 1.0;
Expect.equals(77.0, counter.value);
}
testMetricNameCollision() {
var counter = new Counter('a.b.c', 'alpha bravo charlie');
var counter2 = new Counter('a.b.c', 'alpha bravo charlie collider');
Metrics.register(counter);
Expect.throws(() {
Metrics.register(counter2);
});
Metrics.deregister(counter);
Metrics.register(counter);
var counter3 = new Counter('a.b.c.d', '');
Metrics.register(counter3);
}
testBadName() {
Expect.throws(() {
var counter = new Counter('a.b/c', 'description');
});
Expect.throws(() {
var counter = new Counter('vm', 'description');
});
}
main() {
testGauge1();
testGauge2();
testCounter();
testCustomCounter();
testMetricNameCollision();
testBadName();
}