package com.subgraph.orchid.circuits.path; import static org.easymock.EasyMock.createMock; import static org.easymock.EasyMock.expect; import static org.easymock.EasyMock.replay; import static org.easymock.EasyMock.verify; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import java.util.Arrays; import java.util.List; import org.junit.Test; import com.subgraph.orchid.Router; import com.subgraph.orchid.circuits.path.ConfigNodeFilter; import com.subgraph.orchid.circuits.path.RouterFilter; import com.subgraph.orchid.data.IPv4Address; public class ConfigNodeFilterTest { @Test public void testIsAddressString() { final List<String> validStrings = Arrays.asList( "1.2.3.4/16", "0.0.0.0/1", "255.0.255.0/16"); final List<String> invalidStrings = Arrays.asList( "1.2.3.256/16", "1.2.3.4/61", "1.2.3.4/0", "1.2.3.4/22x", "1.2.3.4/", "1.2.3.4"); for(String s: validStrings) { assertTrue(s, ConfigNodeFilter.isAddressString(s)); } for(String s: invalidStrings) { assertFalse(s, ConfigNodeFilter.isAddressString(s)); } } @Test public void testIsCountryCode() { final List<String> validStrings = Arrays.asList("{CC}", "{xx}"); final List<String> invalidStrings = Arrays.asList("US", "{xxx}"); for(String s: validStrings) { assertTrue(s, ConfigNodeFilter.isCountryCodeString(s)); } for(String s: invalidStrings) { assertFalse(s, ConfigNodeFilter.isCountryCodeString(s)); } } private Router createRouterMockWithAddress(String ip) { final IPv4Address address = IPv4Address.createFromString(ip); final Router router = createMock("mockRouter", Router.class); expect(router.getAddress()).andReturn(address); replay(router); return router; } @Test public void testMaskFilter() { final Router r1 = createRouterMockWithAddress("1.2.3.4"); final Router r2 = createRouterMockWithAddress("1.7.3.4"); final RouterFilter f = ConfigNodeFilter.createFilterFor("1.2.3.0/16"); assertTrue(f.filter(r1)); assertFalse(f.filter(r2)); verify(r1, r2); } }