diff options
Diffstat (limited to 'api/src/test/java/io/opencensus/stats/MeasureTest.java')
-rw-r--r-- | api/src/test/java/io/opencensus/stats/MeasureTest.java | 129 |
1 files changed, 129 insertions, 0 deletions
diff --git a/api/src/test/java/io/opencensus/stats/MeasureTest.java b/api/src/test/java/io/opencensus/stats/MeasureTest.java new file mode 100644 index 00000000..a9302425 --- /dev/null +++ b/api/src/test/java/io/opencensus/stats/MeasureTest.java @@ -0,0 +1,129 @@ +/* + * Copyright 2016-17, OpenCensus Authors + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.opencensus.stats; + +import static com.google.common.truth.Truth.assertThat; + +import com.google.common.collect.Lists; +import com.google.common.testing.EqualsTester; +import io.opencensus.common.Function; +import io.opencensus.common.Functions; +import io.opencensus.stats.Measure.MeasureDouble; +import io.opencensus.stats.Measure.MeasureLong; +import java.util.Arrays; +import java.util.List; +import org.junit.Rule; +import org.junit.Test; +import org.junit.rules.ExpectedException; +import org.junit.runner.RunWith; +import org.junit.runners.JUnit4; + +/** Tests for {@link Measure}. */ +@RunWith(JUnit4.class) +public final class MeasureTest { + + @Rule public final ExpectedException thrown = ExpectedException.none(); + + @Test + public void testConstants() { + assertThat(Measure.NAME_MAX_LENGTH).isEqualTo(255); + } + + @Test + public void preventTooLongMeasureName() { + char[] chars = new char[Measure.NAME_MAX_LENGTH + 1]; + Arrays.fill(chars, 'a'); + String longName = String.valueOf(chars); + thrown.expect(IllegalArgumentException.class); + Measure.MeasureDouble.create(longName, "description", "1"); + } + + @Test + public void preventNonPrintableMeasureName() { + thrown.expect(IllegalArgumentException.class); + Measure.MeasureDouble.create("\2", "description", "1"); + } + + @Test + public void testMeasureDoubleComponents() { + Measure measurement = Measure.MeasureDouble.create("Foo", "The description of Foo", "Mbit/s"); + assertThat(measurement.getName()).isEqualTo("Foo"); + assertThat(measurement.getDescription()).isEqualTo("The description of Foo"); + assertThat(measurement.getUnit()).isEqualTo("Mbit/s"); + } + + @Test + public void testMeasureLongComponents() { + Measure measurement = Measure.MeasureLong.create("Bar", "The description of Bar", "1"); + assertThat(measurement.getName()).isEqualTo("Bar"); + assertThat(measurement.getDescription()).isEqualTo("The description of Bar"); + assertThat(measurement.getUnit()).isEqualTo("1"); + } + + @Test + public void testMeasureDoubleEquals() { + new EqualsTester() + .addEqualityGroup( + Measure.MeasureDouble.create("name", "description", "bit/s"), + Measure.MeasureDouble.create("name", "description", "bit/s")) + .addEqualityGroup(Measure.MeasureDouble.create("name", "description 2", "bit/s")) + .testEquals(); + } + + @Test + public void testMeasureLongEquals() { + new EqualsTester() + .addEqualityGroup( + Measure.MeasureLong.create("name", "description", "bit/s"), + Measure.MeasureLong.create("name", "description", "bit/s")) + .addEqualityGroup(Measure.MeasureLong.create("name", "description 2", "bit/s")) + .testEquals(); + } + + @Test + public void testMatch() { + List<Measure> measures = + Arrays.asList( + MeasureDouble.create("measure1", "description", "1"), + MeasureLong.create("measure2", "description", "1")); + List<String> outputs = Lists.newArrayList(); + for (Measure measure : measures) { + outputs.add( + measure.match( + new Function<MeasureDouble, String>() { + @Override + public String apply(MeasureDouble arg) { + return "double"; + } + }, + new Function<MeasureLong, String>() { + @Override + public String apply(MeasureLong arg) { + return "long"; + } + }, + Functions.<String>throwAssertionError())); + } + assertThat(outputs).containsExactly("double", "long").inOrder(); + } + + @Test + public void testMeasureDoubleIsNotEqualToMeasureLong() { + assertThat(Measure.MeasureDouble.create("name", "description", "bit/s")) + .isNotEqualTo(Measure.MeasureLong.create("name", "description", "bit/s")); + } +} |