/** * Copyright 2013 Netflix, Inc. * <p/> * 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 * <p/> * http://www.apache.org/licenses/LICENSE-2.0 * <p/> * 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 com.netflix.servo.tag; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; import java.util.ArrayList; import java.util.Collection; import java.util.Map; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertTrue; public class SortedTagListTest { static final Tag A = new BasicTag("a", "a"); static final Tag B = new BasicTag("b", "b"); static final Tag C = new BasicTag("c", "c"); static final Tag[] TAG_ARRAY = new Tag[3]; private TagList testListFromStrings; private TagList testListFromCollection; private TagList testListFromTags; private Collection<Tag> collection; @BeforeClass public void setup() throws Exception { TAG_ARRAY[0] = A; TAG_ARRAY[1] = B; TAG_ARRAY[2] = C; testListFromStrings = new SortedTagList.Builder() .withTag("a", "a") .withTag("b", "b") .withTag("c", "c") .build(); collection = new ArrayList<>(); collection.add(A); collection.add(C); collection.add(B); testListFromCollection = new SortedTagList.Builder().withTags(collection).build(); testListFromTags = new SortedTagList.Builder().withTag(C).withTag(A).withTag(B).build(); } @Test public void testGetTag() throws Exception { assertTrue(testListFromCollection.getTag("a").equals(A)); assertTrue(testListFromStrings.getTag("b").equals(B)); assertTrue(testListFromTags.getTag("c").equals(C)); } @Test public void testContainsKey() throws Exception { assertTrue(testListFromCollection.containsKey("b")); assertTrue(testListFromStrings.containsKey("c")); assertTrue(testListFromTags.containsKey("a")); } @Test public void testIsEmpty() throws Exception { assertTrue(SortedTagList.EMPTY.isEmpty()); assertTrue(!testListFromCollection.isEmpty()); assertTrue(!testListFromStrings.isEmpty()); assertTrue(!testListFromTags.isEmpty()); } @Test public void testSize() throws Exception { assertTrue(SortedTagList.EMPTY.isEmpty()); assertTrue(!testListFromCollection.isEmpty()); assertTrue(!testListFromStrings.isEmpty()); assertTrue(!testListFromTags.isEmpty()); } @Test public void testOrder() throws Exception { int i = 0; for (Tag testListFromString : testListFromStrings) { assertEquals(testListFromString, TAG_ARRAY[i]); i++; } i = 0; for (Tag testListFromTag : testListFromTags) { assertEquals(testListFromTag, TAG_ARRAY[i]); i++; } i = 0; for (Tag aTestListFromCollection : testListFromCollection) { assertEquals(aTestListFromCollection, TAG_ARRAY[i]); i++; } } @Test public void testAsMap() throws Exception { Map<String, String> stringMap = testListFromCollection.asMap(); int i = 0; for (String s : stringMap.keySet()) { assertEquals(s, TAG_ARRAY[i].getKey()); i++; } i = 0; for (String s : stringMap.values()) { assertEquals(s, TAG_ARRAY[i].getValue()); i++; } } }