blob: 4f82306e0866bddc012b393ee061809cb9f3aa9d [file] [log] [blame]
/*
* Copyright 2016-present Open Networking Laboratory
*
* 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 org.onosproject.store.resource.impl;
import com.google.common.collect.ImmutableSet;
import org.junit.Test;
import org.onosproject.net.DeviceId;
import org.onosproject.net.resource.DiscreteResource;
import org.onosproject.net.resource.Resources;
import org.onosproject.store.service.Serializer;
import java.util.Optional;
import static org.hamcrest.Matchers.is;
import static org.junit.Assert.assertThat;
public class GenericDiscreteResourcesTest {
private final Serializer serializer = ConsistentResourceStore.SERIALIZER;
@Test
public void testIfResourceIsFound() {
DiscreteResource res1 = Resources.discrete(DeviceId.deviceId("a")).resource();
DiscreteResources sut = GenericDiscreteResources.of(ImmutableSet.of(res1));
assertThat(sut.lookup(res1.id()), is(Optional.of(res1)));
}
@Test
public void testIfResourceIsNotFound() {
DiscreteResource res1 = Resources.discrete(DeviceId.deviceId("a")).resource();
DiscreteResource res2 = Resources.discrete(DeviceId.deviceId("b")).resource();
DiscreteResources sut = GenericDiscreteResources.of(ImmutableSet.of(res1));
assertThat(sut.lookup(res2.id()), is(Optional.empty()));
}
@Test
public void testIfDifferenceIsEmpty() {
DiscreteResource res1 = Resources.discrete(DeviceId.deviceId("a")).resource();
DiscreteResource res2 = Resources.discrete(DeviceId.deviceId("b")).resource();
DiscreteResources sut = GenericDiscreteResources.of(ImmutableSet.of(res1, res2));
DiscreteResources other = GenericDiscreteResources.of(ImmutableSet.of(res1, res2));
DiscreteResources expected = GenericDiscreteResources.of(ImmutableSet.of());
assertThat(sut.difference(other), is(expected));
}
@Test
public void testIfDifferenceIsNotEmpty() {
DiscreteResource res1 = Resources.discrete(DeviceId.deviceId("a")).resource();
DiscreteResource res2 = Resources.discrete(DeviceId.deviceId("b")).resource();
DiscreteResources sut = GenericDiscreteResources.of(ImmutableSet.of(res1, res2));
DiscreteResources other = GenericDiscreteResources.of(ImmutableSet.of(res1));
DiscreteResources expected = GenericDiscreteResources.of(ImmutableSet.of(res2));
assertThat(sut.difference(other), is(expected));
}
@Test
public void testIfDifferenceIsNotChanged() {
DiscreteResource res1 = Resources.discrete(DeviceId.deviceId("a")).resource();
DiscreteResource res2 = Resources.discrete(DeviceId.deviceId("b")).resource();
DiscreteResources sut = GenericDiscreteResources.of(ImmutableSet.of(res1));
DiscreteResources other = GenericDiscreteResources.of(ImmutableSet.of(res2));
DiscreteResources expected = GenericDiscreteResources.of(ImmutableSet.of(res1));
assertThat(sut.difference(other), is(expected));
}
@Test
public void testDifferenceFromEmpty() {
DiscreteResource res1 = Resources.discrete(DeviceId.deviceId("a")).resource();
DiscreteResources sut = GenericDiscreteResources.of(ImmutableSet.of(res1));
DiscreteResources other = GenericDiscreteResources.of(ImmutableSet.of());
DiscreteResources expected = GenericDiscreteResources.of(ImmutableSet.of(res1));
assertThat(sut.difference(other), is(expected));
}
@Test
public void testEmpty() {
DiscreteResources sut = GenericDiscreteResources.of(ImmutableSet.of());
assertThat(sut.isEmpty(), is(true));
}
@Test
public void testNotEmpty() {
DiscreteResource res1 = Resources.discrete(DeviceId.deviceId("a")).resource();
DiscreteResources sut = GenericDiscreteResources.of(ImmutableSet.of(res1));
assertThat(sut.isEmpty(), is(false));
}
@Test
public void testIfResourceIsContained() {
DiscreteResource res1 = Resources.discrete(DeviceId.deviceId("a")).resource();
DiscreteResources sut = GenericDiscreteResources.of(ImmutableSet.of(res1));
assertThat(sut.containsAny(ImmutableSet.of(res1)), is(true));
}
@Test
public void testIfResourceIsNotContained() {
DiscreteResource res1 = Resources.discrete(DeviceId.deviceId("a")).resource();
DiscreteResource res2 = Resources.discrete(DeviceId.deviceId("b")).resource();
DiscreteResources sut = GenericDiscreteResources.of(ImmutableSet.of(res1));
assertThat(sut.containsAny(ImmutableSet.of(res2)), is(false));
}
@Test
public void testContainsWithEmpty() {
DiscreteResource res1 = Resources.discrete(DeviceId.deviceId("a")).resource();
DiscreteResources sut = GenericDiscreteResources.of(ImmutableSet.of(res1));
assertThat(sut.containsAny(ImmutableSet.of()), is(false));
}
@Test
public void testAdd() {
DiscreteResource res1 = Resources.discrete(DeviceId.deviceId("a")).resource();
DiscreteResource res2 = Resources.discrete(DeviceId.deviceId("b")).resource();
DiscreteResources sut = GenericDiscreteResources.of(ImmutableSet.of(res1));
DiscreteResources other = GenericDiscreteResources.of(ImmutableSet.of(res2));
DiscreteResources expected = GenericDiscreteResources.of(ImmutableSet.of(res1, res2));
assertThat(sut.add(other), is(expected));
}
@Test
public void testValues() {
DiscreteResource res1 = Resources.discrete(DeviceId.deviceId("a")).resource();
DiscreteResource res2 = Resources.discrete(DeviceId.deviceId("b")).resource();
DiscreteResources sut = GenericDiscreteResources.of(ImmutableSet.of(res1, res2));
assertThat(sut.values(), is(ImmutableSet.of(res1, res2)));
}
@Test
public void testDifferenceSerializable() {
DiscreteResource res1 = Resources.discrete(DeviceId.deviceId("a")).resource();
DiscreteResource res2 = Resources.discrete(DeviceId.deviceId("b")).resource();
DiscreteResources set1 = GenericDiscreteResources.of(ImmutableSet.of(res1, res2));
DiscreteResources set2 = GenericDiscreteResources.of(ImmutableSet.of(res1));
DiscreteResources difference = set1.difference(set2);
assertThat(serializer.decode(serializer.encode(difference)), is(difference));
}
@Test
public void testAddSerializable() {
DiscreteResource res1 = Resources.discrete(DeviceId.deviceId("a")).resource();
DiscreteResource res2 = Resources.discrete(DeviceId.deviceId("b")).resource();
DiscreteResources set1 = GenericDiscreteResources.of(ImmutableSet.of(res1));
DiscreteResources set2 = GenericDiscreteResources.of(ImmutableSet.of(res2));
DiscreteResources add = set1.add(set2);
assertThat(serializer.decode(serializer.encode(add)), is(add));
}
}