af062818b47340eef15700d2f0211576ba3506eevboxsync/*
af062818b47340eef15700d2f0211576ba3506eevboxsync * The contents of this file are subject to the terms of the Common Development and
af062818b47340eef15700d2f0211576ba3506eevboxsync * Distribution License (the License). You may not use this file except in compliance with the
af062818b47340eef15700d2f0211576ba3506eevboxsync * License.
af062818b47340eef15700d2f0211576ba3506eevboxsync *
af062818b47340eef15700d2f0211576ba3506eevboxsync * You can obtain a copy of the License at legal/CDDLv1.0.txt. See the License for the
af062818b47340eef15700d2f0211576ba3506eevboxsync * specific language governing permission and limitations under the License.
af062818b47340eef15700d2f0211576ba3506eevboxsync *
af062818b47340eef15700d2f0211576ba3506eevboxsync * When distributing Covered Software, include this CDDL Header Notice in each file and include
af062818b47340eef15700d2f0211576ba3506eevboxsync * the License file at legal/CDDLv1.0.txt. If applicable, add the following below the CDDL
af062818b47340eef15700d2f0211576ba3506eevboxsync * Header, with the fields enclosed by brackets [] replaced by your own identifying
af062818b47340eef15700d2f0211576ba3506eevboxsync * information: "Portions copyright [year] [name of copyright owner]".
af062818b47340eef15700d2f0211576ba3506eevboxsync *
af062818b47340eef15700d2f0211576ba3506eevboxsync * Copyright 2013 ForgeRock Inc.
af062818b47340eef15700d2f0211576ba3506eevboxsync */
af062818b47340eef15700d2f0211576ba3506eevboxsyncpackage org.forgerock.openam.entitlement.utils.indextree.treenodes;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsyncimport org.forgerock.openam.entitlement.utils.indextree.nodecontext.MapSearchContext;
af062818b47340eef15700d2f0211576ba3506eevboxsyncimport org.forgerock.openam.entitlement.utils.indextree.nodecontext.SearchContext;
af062818b47340eef15700d2f0211576ba3506eevboxsyncimport org.testng.annotations.BeforeMethod;
589fd26cedb2b4ebbed14f2964cad03cc8ebbca2vboxsyncimport org.testng.annotations.Test;
4b9d6701570cb98fd36e209314239d104ec584d3vboxsync
4b9d6701570cb98fd36e209314239d104ec584d3vboxsyncimport static org.testng.Assert.assertEquals;
589fd26cedb2b4ebbed14f2964cad03cc8ebbca2vboxsyncimport static org.testng.Assert.assertFalse;
589fd26cedb2b4ebbed14f2964cad03cc8ebbca2vboxsyncimport static org.testng.Assert.assertTrue;
589fd26cedb2b4ebbed14f2964cad03cc8ebbca2vboxsync
589fd26cedb2b4ebbed14f2964cad03cc8ebbca2vboxsync/**
589fd26cedb2b4ebbed14f2964cad03cc8ebbca2vboxsync * Unit test for MultiWildcardNode.
589fd26cedb2b4ebbed14f2964cad03cc8ebbca2vboxsync *
af062818b47340eef15700d2f0211576ba3506eevboxsync * @author andrew.forrest@forgerock.com
af062818b47340eef15700d2f0211576ba3506eevboxsync */
af062818b47340eef15700d2f0211576ba3506eevboxsyncpublic class MultiWildcardNodeTest {
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync private TreeNode multiWildcardTreeNode;
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync @BeforeMethod
af062818b47340eef15700d2f0211576ba3506eevboxsync public void setUp() {
af062818b47340eef15700d2f0211576ba3506eevboxsync multiWildcardTreeNode = new MultiWildcardNode();
af062818b47340eef15700d2f0211576ba3506eevboxsync }
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync @Test
af062818b47340eef15700d2f0211576ba3506eevboxsync public void verifySingleWildcardNodeCharacteristics() {
af062818b47340eef15700d2f0211576ba3506eevboxsync assertFalse(multiWildcardTreeNode.isRoot());
af062818b47340eef15700d2f0211576ba3506eevboxsync assertTrue(multiWildcardTreeNode.isWildcard());
af062818b47340eef15700d2f0211576ba3506eevboxsync assertEquals(MultiWildcardNode.WILDCARD, multiWildcardTreeNode.getNodeValue());
af062818b47340eef15700d2f0211576ba3506eevboxsync }
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync @Test
af062818b47340eef15700d2f0211576ba3506eevboxsync public void allowMultiLevelMatching() {
af062818b47340eef15700d2f0211576ba3506eevboxsync SearchContext context = new MapSearchContext();
af062818b47340eef15700d2f0211576ba3506eevboxsync assertTrue(multiWildcardTreeNode.hasInterestIn('a', context));
af062818b47340eef15700d2f0211576ba3506eevboxsync assertTrue(multiWildcardTreeNode.hasInterestIn('b', context));
af062818b47340eef15700d2f0211576ba3506eevboxsync assertTrue(multiWildcardTreeNode.hasInterestIn('/', context));
af062818b47340eef15700d2f0211576ba3506eevboxsync assertTrue(multiWildcardTreeNode.hasInterestIn('c', context));
af062818b47340eef15700d2f0211576ba3506eevboxsync }
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync @Test
af062818b47340eef15700d2f0211576ba3506eevboxsync public void disallowQuestionMarkMatching() {
af062818b47340eef15700d2f0211576ba3506eevboxsync SearchContext context = new MapSearchContext();
af062818b47340eef15700d2f0211576ba3506eevboxsync assertFalse(multiWildcardTreeNode.hasInterestIn('?', context));
af062818b47340eef15700d2f0211576ba3506eevboxsync }
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync @Test
af062818b47340eef15700d2f0211576ba3506eevboxsync public void disallowBookmarkMatching() {
af062818b47340eef15700d2f0211576ba3506eevboxsync SearchContext context = new MapSearchContext();
af062818b47340eef15700d2f0211576ba3506eevboxsync assertFalse(multiWildcardTreeNode.hasInterestIn('#', context));
af062818b47340eef15700d2f0211576ba3506eevboxsync }
af062818b47340eef15700d2f0211576ba3506eevboxsync
af062818b47340eef15700d2f0211576ba3506eevboxsync}
af062818b47340eef15700d2f0211576ba3506eevboxsync