blob: a870c34799e401cb7020f00552f23544e9836483 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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 flex.messaging.io.amf.translator;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import java.util.IdentityHashMap;
import java.util.Map;
/**
* Simple test to check that the StrictReferenceTable
* auto increments correctly, does not try to access items
* out of bounds, and correct auto generates index-based
* and incremented Integer values for added keys.
*/
public class StrictReferenceTableTest {
private Map<Object, Object> table;
private static Object ONE = new Object();
private static Object TWO = new Object();
private static Object THREE = new Object();
private static Object FOUR = new Object();
private static Object FIVE = new Object();
private static Object[] objects = new Object[]{ONE, TWO, THREE, FOUR, FIVE};
private static final int length = 2;
@Before
public void setUp() throws Exception {
table = new IdentityHashMap<Object, Object>(length);
}
@After
public void tearDown() throws Exception {
table = null;
}
@Test
public void testCapacity() {
table.clear();
int goal = length * 2;
for (int i = 0; i < goal; i++) {
table.put(objects[i], objects[i]);
}
Object one = table.get(ONE);
if (one != ONE) {
Assert.fail();
}
Object two = table.get(TWO);
if (two != TWO) {
Assert.fail();
}
Object three = table.get(THREE);
if (three != THREE) {
Assert.fail();
}
Object four = table.get(FOUR);
if (four != FOUR) {
Assert.fail();
}
Object five = table.get(FIVE);
if (five != null) {
Assert.fail();
}
if (table.size() != 4) {
Assert.fail();
}
}
@Test
public void testIndex() {
table.clear();
int goal = length * 2;
for (int i = 0; i < goal; i++) {
table.put(objects[i], table.size());
}
Integer first = (Integer) table.get(ONE);
if (first != 0) {
Assert.fail();
}
Integer second = (Integer) table.get(TWO);
if (second != 1) {
Assert.fail();
}
Integer third = (Integer) table.get(THREE);
if (third != 2) {
Assert.fail();
}
Integer fourth = (Integer) table.get(FOUR);
if (fourth != 3) {
Assert.fail();
}
Object fifth = table.get(FIVE);
if (fifth != null) {
Assert.fail();
}
}
}