/******************************************************************************* * Copyright (c) 2015 IBH SYSTEMS GmbH. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBH SYSTEMS GmbH - initial API and implementation *******************************************************************************/ package org.eclipse.packagedrone.repo.utils.osgi.tests; import java.util.LinkedList; import java.util.List; import org.eclipse.packagedrone.utils.Filters; import org.eclipse.packagedrone.utils.Filters.Multi; import org.eclipse.packagedrone.utils.Filters.Pair; import org.junit.Assert; import org.junit.Test; public class FilterTest { @Test public void test1 () { Assert.assertEquals ( "(|(a=b)(c=d))", Filters.or ( pairs ( "a", "b", "c", "d" ) ) ); Assert.assertEquals ( "(a=b)", Filters.or ( pairs ( "a", "b" ) ) ); Assert.assertEquals ( "", Filters.or ( pairs () ) ); } @Test public void test2 () { final Multi m = new Filters.Multi ( "&" ); final Multi m1 = new Filters.Multi ( "|" ); final Multi m2 = new Filters.Multi ( "|" ); m.addNode ( m1 ); m.addNode ( m2 ); m2.addNode ( new Pair ( "foo", "bar" ) ); Assert.assertEquals ( "(foo=bar)", m.toString () ); } @Test public void test3 () { final Multi m = new Filters.Multi ( "&" ); final Multi m1 = new Filters.Multi ( "|" ); final Multi m2 = new Filters.Multi ( "|" ); m.addNode ( m1 ); m.addNode ( m2 ); m1.addNode ( new Pair ( "foo", "bar" ) ); m2.addNode ( new Pair ( "foo2", "bar2" ) ); Assert.assertEquals ( "(&(foo=bar)(foo2=bar2))", m.toString () ); } @Test public void test4 () { final Multi m = new Filters.Multi ( "&" ); final Multi m1 = new Filters.Multi ( "|" ); final Multi m2 = new Filters.Multi ( "|" ); m.addNode ( m1 ); m.addNode ( m2 ); Assert.assertEquals ( "", m.toString () ); } @Test public void test5 () { final Multi m = new Filters.Multi ( "&" ); final Multi m1 = new Filters.Multi ( "|" ); final Multi m2 = new Filters.Multi ( "|" ); m.addNode ( m1 ); m.addNode ( m2 ); m1.addNode ( new Pair ( "foo", "bar" ) ); m1.addNode ( new Pair ( "answer", "42" ) ); m2.addNode ( new Pair ( "foo2", "bar2" ) ); m2.addNode ( new Pair ( "foz2", "baz2" ) ); Assert.assertEquals ( "(&(|(foo=bar)(answer=42))(|(foo2=bar2)(foz2=baz2)))", m.toString () ); } @Test public void test6 () { final Multi m = new Filters.Multi ( "&" ); final Multi m1 = new Filters.Multi ( "|" ); final Multi m2 = new Filters.Multi ( "|" ); m.addNode ( m1 ); m.addNode ( m2 ); m1.addNode ( new Pair ( "foo", "bar" ) ); m1.addNode ( new Pair ( "answer", "42" ) ); Assert.assertEquals ( "(|(foo=bar)(answer=42))", m.toString () ); } private List<Pair> pairs ( final String... tokens ) { int pos = 0; final List<Pair> result = new LinkedList<> (); while ( pos + 1 < tokens.length ) { result.add ( new Pair ( tokens[pos], tokens[pos + 1] ) ); pos += 2; } return result; } }