/*
* Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*/
package org.opendaylight.yangtools.util;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.Iterables;
import java.util.Collection;
import java.util.Collections;
import org.junit.Test;
public class ConstantArrayCollectionTest {
private static final String[] ARRAY = new String[] { "a", "bb", "ccc" };
private static final Collection<String> REF = ImmutableList.copyOf(ARRAY);
private static Collection<String> create() {
return new ConstantArrayCollection<>(ARRAY.clone());
}
@Test
public void testToString() {
// Empty
assertEquals(Collections.emptySet().toString(), new ConstantArrayCollection<>(new Object[0]).toString());
// Normal
assertEquals(REF.toString(), create().toString());
}
@Test
public void testEquals() {
final Collection<?> c = create();
assertTrue(c.containsAll(REF));
assertTrue(REF.containsAll(c));
assertTrue(Iterables.elementsEqual(REF, c));
}
@Test
public void testSimpleOperations() {
final Collection<?> c = create();
assertEquals(ARRAY.length, c.size());
assertFalse(c.isEmpty());
assertTrue(c.contains("ccc"));
assertFalse(c.contains(""));
assertFalse(c.contains(1));
assertTrue(c.containsAll(Collections.<String>emptyList()));
assertFalse(c.containsAll(Collections.singleton("")));
assertFalse(c.containsAll(Collections.singleton(1)));
}
@Test
public void testProtection() {
final Collection<?> c = create();
try {
c.add(null);
fail();
} catch (UnsupportedOperationException e) {
// OK
}
try {
c.remove(null);
fail();
} catch (UnsupportedOperationException e) {
// OK
}
try {
c.addAll(null);
fail();
} catch (UnsupportedOperationException e) {
// OK
}
try {
c.removeAll(null);
fail();
} catch (UnsupportedOperationException e) {
// OK
}
try {
c.retainAll(null);
fail();
} catch (UnsupportedOperationException e) {
// OK
}
try {
c.clear();
fail();
} catch (UnsupportedOperationException e) {
// OK
}
}
}