/* * Copyright (C) 2013 Google Inc. * * 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 interactivespaces.resource; import junit.framework.Assert; import org.junit.Test; /** * Test the {@link VersionedResourceCollection} class. * * @author Keith M. Hughes */ public class VersionedResourceCollectionTest { /** * Try getting items just by version. */ @Test public void testVersion() { VersionedResourceCollection<Integer> resources = VersionedResourceCollection.newVersionedResourceCollection(); Version v0 = new Version(1, 0, 0); Integer v0Value = 12; Version v1 = new Version(1, 1, 0); Integer v1Value = 75; Version v2 = new Version(2, 0, 0); Integer v2Value = 13; resources.addResource(v0, v0Value); resources.addResource(v1, v1Value); resources.addResource(v2, v2Value); Assert.assertEquals(v0Value, resources.getResource(v0)); Assert.assertEquals(v1Value, resources.getResource(v1)); Assert.assertEquals(v2Value, resources.getResource(v2)); Assert.assertNull(resources.getResource(v2.incrementMajor())); } /** * Test when resources available in range. */ @Test public void testInRange() { VersionedResourceCollection<Integer> resources = VersionedResourceCollection.newVersionedResourceCollection(); Version v0 = new Version(1, 0, 0); Integer v0Value = 12; Version v1 = new Version(1, 1, 0); Integer v1Value = 75; Version v2 = new Version(2, 0, 0); Integer v2Value = 13; resources.addResource(v0, v0Value); resources.addResource(v1, v1Value); resources.addResource(v2, v2Value); // make sure we get the entry with the largest version Assert.assertEquals(v2Value, resources.getHighestEntry()); // Should get highest VersionRange range0 = new VersionRange(v0, v2, true); Assert.assertEquals(v2Value, resources.getResource(range0)); // Should get second highest VersionRange range1 = new VersionRange(v0, v2, false); Assert.assertEquals(v1Value, resources.getResource(range1)); // Should get second highest VersionRange range2 = new VersionRange(v0, v1, true); Assert.assertEquals(v1Value, resources.getResource(range2)); // Should get lowest VersionRange range3 = new VersionRange(v0, v1, false); Assert.assertEquals(v0Value, resources.getResource(range3)); // Should get lowest VersionRange range4 = new VersionRange(v0, v0.incrementMicro(), false); Assert.assertEquals(v0Value, resources.getResource(range4)); // Should get middle VersionRange range5 = new VersionRange(v1, v1.incrementMicro(), false); Assert.assertEquals(v1Value, resources.getResource(range5)); // Should get highest VersionRange range6 = new VersionRange(v2, v2.incrementMicro(), false); Assert.assertEquals(v2Value, resources.getResource(range6)); // Should get highest from an infinite upper limit VersionRange range7 = new VersionRange(v2); Assert.assertEquals(v2Value, resources.getResource(range7)); VersionRange range8 = new VersionRange(v1); Assert.assertEquals(v2Value, resources.getResource(range8)); VersionRange range9 = new VersionRange(v0); Assert.assertEquals(v2Value, resources.getResource(range9)); } @Test public void testOutsideRange() { VersionedResourceCollection<Integer> resources = VersionedResourceCollection.newVersionedResourceCollection(); Version v0 = new Version(1, 0, 0); Integer v0Value = 12; Version v1 = new Version(1, 1, 0); Integer v1Value = 75; Version v2 = new Version(2, 0, 0); Integer v2Value = 13; resources.addResource(v0, v0Value); resources.addResource(v1, v1Value); resources.addResource(v2, v2Value); Version below = new Version(0, 1, 2); // Range totally outside below Assert.assertNull(resources.getResource(new VersionRange(below, below.incrementMinor(), true))); // Bump up against lowest in set Assert.assertNull(resources.getResource(new VersionRange(below, v0, false))); // Range totally outside above Version above = v2.incrementMinor(); Assert.assertNull(resources.getResource(new VersionRange(above, above.incrementMinor(), true))); } }