/** * * Copyright (c) 2006-2017, Speedment, Inc. All Rights Reserved. * * 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. */ /* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package com.speedment.runtime.core.util; import com.speedment.common.invariant.NullUtil; import org.junit.*; import java.util.*; import static org.junit.Assert.*; /** * * @author Per Minborg */ public class NullUtilTest { private static final String[] ARRAY_WITH_NULL = {"A", "B", null, "D"}; private static final String[] ARRAY_WITHOUT_NULL = {"A", "B", "C", "D"}; private static final List<String> LIST_WITH_NULL = Arrays.asList(ARRAY_WITH_NULL); private static final List<String> LIST_WITHOUT_NULL = Arrays.asList(ARRAY_WITHOUT_NULL); public NullUtilTest() { } @BeforeClass public static void setUpClass() { } @AfterClass public static void tearDownClass() { } @Before public void setUp() { } @After public void tearDown() { } @Test(expected = NullPointerException.class) public void testRequireNonNullElements_array_null() { NullUtil.requireNonNullElements((Object[]) null); } @Test public void testRequireNonNullElements_array_no_nulls() { NullUtil.requireNonNullElements(ARRAY_WITHOUT_NULL); } @Test(expected = NullPointerException.class) public void testRequireNonNullElements_array_contains_null() { NullUtil.requireNonNullElements(ARRAY_WITH_NULL); } @Test public void testRequireNonNullElements_array_contains_no_nulls() { assertArrayEquals(ARRAY_WITHOUT_NULL, NullUtil.requireNonNullElements(ARRAY_WITHOUT_NULL)); } @Test(expected = NullPointerException.class) public void testRequireNonNullElements_collection_null() { Collection<String> collection = null; NullUtil.requireNonNullElements(collection); } @Test public void testRequireNonNullElements_collection_whithout_null() { assertEquals(LIST_WITHOUT_NULL, NullUtil.requireNonNullElements(LIST_WITHOUT_NULL)); } @Test(expected = NullPointerException.class) public void testRequireNonNullElements_collection_containts_null() { NullUtil.requireNonNullElements(LIST_WITH_NULL); } @Test(expected = NullPointerException.class) public void testRequireNonNullElements_GenericType_String() { final String msg = "OlleOchTryggve"; try { final String[] result = NullUtil.requireNonNullElements(ARRAY_WITH_NULL, msg); } catch (NullPointerException ex) { assertTrue(ex.getMessage().contains(msg)); throw ex; } } @Test public void testRequireNonNullElements_GenericType_String_Ok() { final String[] result = NullUtil.requireNonNullElements(ARRAY_WITHOUT_NULL, "A"); assertArrayEquals(ARRAY_WITHOUT_NULL, result); } @Test(expected = NullPointerException.class) public void testRequireNonNulls_Object() { final String o0 = null; NullUtil.requireNonNulls(o0); } @Test public void testRequireNonNulls_Object_NotNull() { final String o0 = "A"; NullUtil.requireNonNulls(o0); } @Test public void testRequireNonNulls_Object_Object() { final String obj0 = "A"; final String obj1 = "B"; requireNullPointerException(() -> NullUtil.requireNonNulls(obj0, null)); requireNullPointerException(() -> NullUtil.requireNonNulls(null, obj0)); NullUtil.requireNonNulls(obj0, obj1); } @Test public void testRequireNonNulls_3args() { final String obj0 = "A"; final String obj1 = "B"; final String obj2 = "C"; requireNullPointerException(() -> NullUtil.requireNonNulls(null, obj1, obj2)); requireNullPointerException(() -> NullUtil.requireNonNulls(obj0, null, obj2)); requireNullPointerException(() -> NullUtil.requireNonNulls(obj0, obj1, null)); NullUtil.requireNonNulls(obj0, obj1, obj2); } @Test public void testRequireNonNulls_4args() { final String obj0 = "A"; final String obj1 = "B"; final String obj2 = "C"; final String obj3 = "D"; requireNullPointerException(() -> NullUtil.requireNonNulls(null, obj1, obj2, obj3)); requireNullPointerException(() -> NullUtil.requireNonNulls(obj0, null, obj2, obj3)); requireNullPointerException(() -> NullUtil.requireNonNulls(obj0, obj1, null, obj3)); requireNullPointerException(() -> NullUtil.requireNonNulls(obj0, obj1, obj2, null)); NullUtil.requireNonNulls(obj0, obj1, obj2, obj3); } @Test public void testRequireNonNulls_5args() { final String obj0 = "A"; final String obj1 = "B"; final String obj2 = "C"; final String obj3 = "D"; final String obj4 = "E"; requireNullPointerException(() -> NullUtil.requireNonNulls(null, obj1, obj2, obj3, obj4)); requireNullPointerException(() -> NullUtil.requireNonNulls(obj0, null, obj2, obj3, obj4)); requireNullPointerException(() -> NullUtil.requireNonNulls(obj0, obj1, null, obj3, obj4)); requireNullPointerException(() -> NullUtil.requireNonNulls(obj0, obj1, obj2, null, obj4)); requireNullPointerException(() -> NullUtil.requireNonNulls(obj0, obj1, obj2, obj3, null)); NullUtil.requireNonNulls(obj0, obj1, obj2, obj3, obj4); } @Test public void testRequireNonNulls_6args() { final String obj0 = "A"; final String obj1 = "B"; final String obj2 = "C"; final String obj3 = "D"; final String obj4 = "E"; final String obj5 = "F"; requireNullPointerException(() -> NullUtil.requireNonNulls(null, obj1, obj2, obj3, obj4, obj5)); requireNullPointerException(() -> NullUtil.requireNonNulls(obj0, null, obj2, obj3, obj4, obj5)); requireNullPointerException(() -> NullUtil.requireNonNulls(obj0, obj1, null, obj3, obj4, obj5)); requireNullPointerException(() -> NullUtil.requireNonNulls(obj0, obj1, obj2, null, obj4, obj5)); requireNullPointerException(() -> NullUtil.requireNonNulls(obj0, obj1, obj2, obj3, null, obj5)); requireNullPointerException(() -> NullUtil.requireNonNulls(obj0, obj1, obj2, obj3, obj4, null)); NullUtil.requireNonNulls(obj0, obj1, obj2, obj3, obj4, obj5); } @Test public void testRequireNonNulls_7args() { final String obj0 = "A"; final String obj1 = "B"; final String obj2 = "C"; final String obj3 = "D"; final String obj4 = "E"; final String obj5 = "F"; final String obj6 = "G"; requireNullPointerException(() -> NullUtil.requireNonNulls(null, obj1, obj2, obj3, obj4, obj5, obj6)); requireNullPointerException(() -> NullUtil.requireNonNulls(obj0, null, obj2, obj3, obj4, obj5, obj6)); requireNullPointerException(() -> NullUtil.requireNonNulls(obj0, obj1, null, obj3, obj4, obj5, obj6)); requireNullPointerException(() -> NullUtil.requireNonNulls(obj0, obj1, obj2, null, obj4, obj5, obj6)); requireNullPointerException(() -> NullUtil.requireNonNulls(obj0, obj1, obj2, obj3, null, obj5, obj6)); requireNullPointerException(() -> NullUtil.requireNonNulls(obj0, obj1, obj2, obj3, obj4, null, obj6)); requireNullPointerException(() -> NullUtil.requireNonNulls(obj0, obj1, obj2, obj3, obj4, obj5, null)); NullUtil.requireNonNulls(obj0, obj1, obj2, obj3, obj4, obj5, obj6); } @Test public void testRequireNonNulls_8args() { final String obj0 = "A"; final String obj1 = "B"; final String obj2 = "C"; final String obj3 = "D"; final String obj4 = "E"; final String obj5 = "F"; final String obj6 = "G"; final String obj7 = "H"; requireNullPointerException(() -> NullUtil.requireNonNulls(null, obj1, obj2, obj3, obj4, obj5, obj6, obj7)); requireNullPointerException(() -> NullUtil.requireNonNulls(obj0, null, obj2, obj3, obj4, obj5, obj6, obj7)); requireNullPointerException(() -> NullUtil.requireNonNulls(obj0, obj1, null, obj3, obj4, obj5, obj6, obj7)); requireNullPointerException(() -> NullUtil.requireNonNulls(obj0, obj1, obj2, null, obj4, obj5, obj6, obj7)); requireNullPointerException(() -> NullUtil.requireNonNulls(obj0, obj1, obj2, obj3, null, obj5, obj6, obj7)); requireNullPointerException(() -> NullUtil.requireNonNulls(obj0, obj1, obj2, obj3, obj4, null, obj6, obj7)); requireNullPointerException(() -> NullUtil.requireNonNulls(obj0, obj1, obj2, obj3, obj4, obj5, null, obj7)); requireNullPointerException(() -> NullUtil.requireNonNulls(obj0, obj1, obj2, obj3, obj4, obj5, obj6, null)); NullUtil.requireNonNulls(obj0, obj1, obj2, obj3, obj4, obj5, obj6, obj7); } @Test(expected = NullPointerException.class) public void testRequireKeys_2args_1() { NullUtil.requireKeys(null); } @Test public void testRequireKeys_2args_1_NotNull() { NullUtil.requireKeys(new HashMap<String, String>()); } @Test(expected = NullPointerException.class) public void testRequireKeys_2args_2() { final String[] arr = {"A"}; NullUtil.requireKeys((Map<String, String>) null, arr); } @Test(expected = NullPointerException.class) public void testRequireKeys_2args_2_2() { NullUtil.requireKeys(new HashMap<String, String>(), (String) null); } @Test(expected = NoSuchElementException.class) public void testRequireKeys_2args_2_3_err() { final Map<String, String> map = new HashMap<>(); map.put("A", "Tryggve"); map.put("B", "Sven"); final String[] arr = {"A", "B", "StangeKey"}; final Map<String, String> result = NullUtil.requireKeys(map, arr); } @Test public void testRequireKeys_2args_2_3() { final Map<String, String> map = new HashMap<>(); map.put("A", "Tryggve"); map.put("B", "Sven"); final String[] arr = {"A", "B"}; final Map<String, String> result = NullUtil.requireKeys(map, arr); assertEquals(map, result); } @Test(expected = NoSuchElementException.class) public void testRequireKeys_3args() { final Map<String, String> map = new HashMap<>(); map.put("A", "Tryggve"); map.put("B", "Sven"); final Map<String, String> result = NullUtil.requireKeys(map, "A", "Z"); } @Test public void testRequireKeys_3args_2() { final Map<String, String> map = new HashMap<>(); map.put("A", "Tryggve"); map.put("B", "Sven"); final Map<String, String> result = NullUtil.requireKeys(map, "A", "B"); assertEquals(map, result); } @Test(expected = NoSuchElementException.class) public void testRequireKeys_4args() { final Map<String, String> map = new HashMap<>(); map.put("A", "Tryggve"); map.put("B", "Sven"); map.put("C", "Glenn"); final Map<String, String> result = NullUtil.requireKeys(map, "A", "B", "Z"); } @Test public void testRequireKeys_4args_2() { final Map<String, String> map = new HashMap<>(); map.put("A", "Tryggve"); map.put("B", "Sven"); map.put("C", "Glenn"); final Map<String, String> result = NullUtil.requireKeys(map, "A", "B", "C"); assertEquals(map, result); } @Test public void createInstance() { TestUtil.assertNonInstansiable(NullUtil.class); } private void requireNullPointerException(Runnable r) { try { r.run(); fail(NullPointerException.class.getSimpleName() + " was not thrown"); } catch (NullPointerException npe) { // Ignore } } }