/** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you 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 org.apache.falcon.util; import org.testng.Assert; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; import java.util.Arrays; import java.util.HashSet; /** * Tests for Radix Node. */ public class RadixNodeTest { private RadixNode<String> rootNode = new RadixNode<String>(); private RadixNode<String> normalNode = new RadixNode<String>(); @BeforeMethod public void setUp(){ rootNode.setKey(""); rootNode.setValues(new HashSet<String>(Arrays.asList("root"))); normalNode.setKey("/data/cas/"); normalNode.setValues(new HashSet<String>(Arrays.asList("CAS Project"))); } @Test public void testMatchingWithRoot(){ String inputKey = "/data/cas/"; Assert.assertEquals(rootNode.getMatchLength(inputKey), 0); } @Test public void testEmptyMatchingWithRoot(){ String inputKey = ""; Assert.assertEquals(rootNode.getMatchLength(inputKey), 0); } @Test public void testNullMatchingWithRoot(){ Assert.assertEquals(rootNode.getMatchLength(null), 0); } @Test public void testDistinctStringMatching(){ String inputKey = "data/cas"; Assert.assertEquals(normalNode.getMatchLength(inputKey), 0); } @Test public void testSameStringMatching(){ String inputKey = "/data/cas"; Assert.assertEquals(normalNode.getMatchLength(inputKey), 9); } @Test public void testNullStringMatching(){ Assert.assertEquals(normalNode.getMatchLength(null), 0); } @Test public void testAddingDuplicateValues() { rootNode.addValue("root"); Assert.assertEquals(rootNode.getValues().size(), 1); } @Test public void testAddMultipleValues() { normalNode.addValue("data"); Assert.assertTrue(normalNode.containsValue("data")); Assert.assertTrue(normalNode.containsValue("CAS Project")); } @Test public void testMatchInput() { RadixNode<String> node = new RadixNode<String>(); FalconRadixUtils.INodeAlgorithm matcher = new FalconRadixUtils.FeedRegexAlgorithm(); node.setKey("/data/cas/projects/${YEAR}/${MONTH}/${DAY}"); Assert.assertTrue(node.matches("/data/cas/projects/2014/09/09", matcher)); Assert.assertFalse(node.matches("/data/cas/projects/20140909", matcher)); Assert.assertFalse(node.matches("/data/2014/projects/2014/09/09", matcher)); Assert.assertFalse(node.matches("/data/2014/projects/2014/09/", matcher)); Assert.assertFalse(node.matches("/data/cas/projects/2014/09/09trail", matcher)); Assert.assertFalse(node.matches("/data/cas/projects/2014/09/09/", matcher)); Assert.assertFalse(node.matches("/data/cas/projects/2014/09/", matcher)); } }