protected void processArgs(CollectionTools.Closure<String, String> args) { String value; if ((value = args.execute("env")) != null) environment = Environment.parse(value); if ((value = args.execute("environment")) != null) environment = Environment.parse(value); if ((value = args.execute("profiles.active")) != null) Flow.of(value.split(",")).each(this::addProfile).execute(); }
@Test public void test_each_with_index() { final StringBuilder sb = new StringBuilder(); Flow.of(2, 4, 6).each(new ConsumerWithInt<Integer>() { @Override public void consume(int i, Integer integer) { if (sb.length() != 0) sb.append(", "); sb.append(i); } }).execute(); Assert.assertEquals("0, 1, 2", sb.toString()); }
@Test public void test_each() { final AtomicInteger counter = new AtomicInteger(); Flow.of(1, 2, 3).each(new Consumer<Integer>() { @Override public void consume(Integer integer) { counter.incrementAndGet(); } }).execute(); Assert.assertEquals(3, counter.get()); }
@Test public void test_stop_after_first() { final AtomicInteger counter = new AtomicInteger(); Assert.assertEquals(Integer.valueOf(1), Flow.of(1, 2, 3).each(new Consumer<Integer>() { @Override public void consume(Integer integer) { counter.incrementAndGet(); } }).first().get()); Assert.assertEquals(1, counter.get()); }
@Test public void test_each_with_index_3() { final StringBuilder sb = new StringBuilder(); Flow.of(2, 4, 6) .each(new ConsumerWithInt<Integer>() { @Override public void consume(int i, Integer integer) { if (sb.length() != 0) sb.append(", "); sb.append(i); } }) .first() .get(); Assert.assertEquals("0", sb.toString()); }
@Test public void test_each_after_first() { final AtomicInteger before = new AtomicInteger(); final AtomicInteger after = new AtomicInteger(); Flow.of(1, 2, 3) .each(new Consumer<Integer>() { @Override public void consume(Integer i) { before.incrementAndGet(); } }) .first() .each(new Consumer<Integer>() { @Override public void consume(Integer i) { after.incrementAndGet(); } }) .execute(); Assert.assertEquals(1, before.get()); Assert.assertEquals(1, after.get()); }
@Test public void test_async_queue_limit() { final AtomicInteger before = new AtomicInteger(); long time = System.currentTimeMillis(); String result = Flow.of(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) .each(new Consumer<Integer>() { @Override public void consume(Integer integer) { before.incrementAndGet(); } }) .async(Executors.newFixedThreadPool(1), 5, new Mapper<Integer, Flow<String>>() { @Override public Flow<String> map(Integer i) { try { Thread.sleep(10); } catch (InterruptedException e) { e.printStackTrace(); } return Flow.of(String.valueOf(i)); } }) .first() .get(); time = System.currentTimeMillis() - time; Assert.assertTrue(time >= 10); Assert.assertEquals(7, before.get()); // 1 processed + 5 in queue + 1 waiting to be added Assert.assertEquals("1", result); }
@Test public void test_async_process_only_first_after() { final AtomicInteger after = new AtomicInteger(); String result = Flow.of(1, 2, 3, 4, 5, 6, 7, 8, 9, 10) .async(Executors.newFixedThreadPool(1), 5, new Mapper<Integer, Flow<String>>() { @Override public Flow<String> map(Integer i) { return Flow.of(String.valueOf(i)); } }) .each(new Consumer<String>() { @Override public void consume(String s) { after.incrementAndGet(); try { Thread.sleep(10); } catch (InterruptedException e) { e.printStackTrace(); } } }) .first() .get(); Assert.assertEquals(1, after.get()); Assert.assertEquals("1", result); }