/** * Licensed to The Apereo Foundation under one or more contributor license * agreements. See the NOTICE file distributed with this work for additional * information regarding copyright ownership. * * * The Apereo Foundation licenses this file to you under the Educational * Community License, Version 2.0 (the "License"); you may not use this file * except in compliance with the License. You may obtain a copy of the License * at: * * http://opensource.org/licenses/ecl2.txt * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. * */ package org.opencastproject.util.data.functions; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import static org.opencastproject.util.EqualsUtil.eqListSorted; import static org.opencastproject.util.data.Collections.list; import static org.opencastproject.util.data.Option.none; import static org.opencastproject.util.data.Option.some; import static org.opencastproject.util.data.functions.Options.sequenceOpt; import org.opencastproject.util.data.Effect; import org.opencastproject.util.data.Function; import org.opencastproject.util.data.Option; import org.junit.Test; public class OptionsTest { @Test public void testSequenceOpt() { assertTrue(eqListSorted(list(1, 2, 3), sequenceOpt(list(some(1), none(-1), some(2), some(3), none(-1))).get())); assertTrue(eqListSorted(list(), sequenceOpt(list(none(-1), none(-1))).get())); } @Test public void testForeach() { final Integer[] r = new Integer[1]; final Function<String, Option<Integer>> f = Options.foreach(new Function<String, Option<Integer>>() { @Override public Option<Integer> apply(String s) { return s.length() > 0 ? some(s.length()) : none(Integer.class); } }, new Effect<Integer>() { @Override protected void run(Integer integer) { r[0] = integer; } }); assertEquals(none(Integer.class), f.apply("")); assertNull(r[0]); assertEquals(some(3), f.apply("bla")); assertEquals(new Integer(3), r[0]); } }