/* * Copyright 2000-2016 Vaadin Ltd. * * Licensed under the Apache 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://www.apache.org/licenses/LICENSE-2.0 * * 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 com.vaadin.data; import org.junit.Assert; import org.junit.Test; import com.vaadin.server.SerializableFunction; /** * @author Vaadin Ltd * */ public class ResultTest { @Test public void testOk() { String value = "foo"; Result ok = Result.ok(value); Assert.assertFalse(ok.isError()); Assert.assertFalse(ok.getMessage().isPresent()); ok.ifOk(v -> Assert.assertEquals(value, v)); ok.ifError(msg -> Assert.fail()); } @Test public void testError() { String message = "foo"; Result error = Result.error(message); Assert.assertTrue(error.isError()); Assert.assertTrue(error.getMessage().isPresent()); error.ifOk(v -> Assert.fail()); error.ifError(msg -> Assert.assertEquals(message, msg)); Assert.assertEquals(message, error.getMessage().get()); } @Test public void of_noException() { Result result = Result.of(() -> "", exception -> null); Assert.assertTrue(result instanceof SimpleResult); Assert.assertFalse(result.isError()); } @Test public void of_exception() { String message = "foo"; Result result = Result.of(() -> { throw new RuntimeException(); }, exception -> message); Assert.assertTrue(result instanceof SimpleResult); Assert.assertTrue(result.isError()); Assert.assertEquals(message, result.getMessage().get()); } @SuppressWarnings("serial") @Test public void map_norError_mapperIsApplied() { Result result = new SimpleResult("foo", null) { @Override public Result flatMap( SerializableFunction> mapper) { return mapper.apply("foo"); } }; Result mapResult = result.map(value -> { Assert.assertEquals("foo", value); return "bar"; }); Assert.assertTrue(mapResult instanceof SimpleResult); Assert.assertFalse(mapResult.isError()); mapResult.ifOk(v -> Assert.assertEquals("bar", v)); } @SuppressWarnings("serial") @Test public void map_error_mapperIsApplied() { Result result = new SimpleResult("foo", null) { @Override public Result flatMap( SerializableFunction> mapper) { return new SimpleResult<>(null, "bar"); } }; Result mapResult = result.map(value -> { Assert.assertEquals("foo", value); return "somevalue"; }); Assert.assertTrue(mapResult instanceof SimpleResult); Assert.assertTrue(mapResult.isError()); mapResult.ifError(msg -> Assert.assertEquals("bar", msg)); } }