//it should always be mapped to the default channel(s).
@Test
public void testNoSelection() throws Exception {
Assert.assertTrue(selector instanceof MultiplexingChannelSelector);
Event noHeaderEvent = new MockEvent();
List<Channel> reqCh1 = selector.getRequiredChannels(noHeaderEvent);
List<Channel> optCh1 = selector.getOptionalChannels(noHeaderEvent);
Assert.assertEquals(2, reqCh1.size());
Assert.assertTrue(reqCh1.get(0).getName().equals("ch1"));
Assert.assertTrue(reqCh1.get(1).getName().equals("ch3"));
Assert.assertTrue(optCh1.size() == 0);
Map<String, String> header2 = new HashMap<String, String>();
header2.put("someheader", "foo");
Event invalidHeaderEvent = new MockEvent();
invalidHeaderEvent.setHeaders(header2);
List<Channel> reqCh2 = selector.getRequiredChannels(invalidHeaderEvent);
List<Channel> optCh2 = selector.getOptionalChannels(invalidHeaderEvent);
Assert.assertEquals(2, reqCh2.size());
Assert.assertTrue(reqCh2.get(0).getName().equals("ch1"));
Assert.assertTrue(reqCh2.get(1).getName().equals("ch3"));
Assert.assertTrue(optCh2.size() == 0);
Map<String, String> header3 = new HashMap<String, String>();
header3.put("myheader", "bar1");
Event unmatchedHeaderEvent = new MockEvent();
unmatchedHeaderEvent.setHeaders(header3);
List<Channel> reqCh3 = selector.getRequiredChannels(unmatchedHeaderEvent);
List<Channel> optCh3 = selector.getOptionalChannels(unmatchedHeaderEvent);
Assert.assertEquals(2, reqCh3.size());
Assert.assertTrue(reqCh3.get(0).getName().equals("ch1"));
Assert.assertTrue(reqCh3.get(1).getName().equals("ch3"));
Assert.assertTrue(optCh3.size() == 0);
Map<String, String> header4 = new HashMap<String, String>();
header4.put("myheader", "zebra");
Event zebraEvent = new MockEvent();
zebraEvent.setHeaders(header4);
List<Channel> reqCh4 = selector.getRequiredChannels(zebraEvent);
List<Channel> optCh4 = selector.getOptionalChannels(zebraEvent);
Assert.assertEquals(2, reqCh4.size());
Assert.assertTrue(reqCh4.get(0).getName().equals("ch1"));