/*
* Copyright 2013 Cameron Beccario
*
* 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 net.nullschool.grains;
import net.nullschool.collect.CollectionTestingTools;
import net.nullschool.collect.MapIterator;
import org.junit.Test;
import java.util.*;
import static net.nullschool.collect.CollectionTestingTools.*;
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.fail;
/**
* 2013-05-04<p/>
*
* @author Cameron Beccario
*/
public class AbstractGrainBuilderTest {
@Test
public void test_compare() {
Map<String, Object> expected = newMap("a", 1, "b", 2);
GrainBuilder builder = new MockGrainBuilder(
CollectionTestingTools.<String, Object>newSortedMap(null, "a", 1),
CollectionTestingTools.<String, Object>newSortedMap(null, "b", 2));
compare_maps(expected, builder);
}
@Test
public void test_put() {
Map<String, Object> expected = newMap("a", 1, "+", 3, "b", 2);
GrainBuilder builder = new MockGrainBuilder("a");
builder.put("b", 2);
builder.put("a", 1);
builder.put("+", 3);
compare_maps(expected, builder);
}
@Test
public void test_putAll() {
Map<String, Object> expected = newMap("a", 1, "b", 2);
GrainBuilder builder = new MockGrainBuilder("a");
builder.putAll(expected);
compare_maps(expected, builder);
}
@Test
public void test_iteration_without_calling_hasNext() {
Set<String> keys = new LinkedHashSet<>();
GrainBuilder builder = new MockGrainBuilder("a");
builder.put("a", 1);
builder.put("b", 2);
MapIterator<String, Object> iter = builder.iterator();
for (int i = 0; i < builder.size(); i++) {
keys.add(iter.next());
}
try { iter.next(); fail(); } catch (NoSuchElementException expected) {}
assertArrayEquals(builder.keySet().toArray(), keys.toArray());
}
@Test
public void test_remove() {
GrainBuilder builder = new MockGrainBuilder("a");
builder.put("a", 1);
builder.put("b", 2);
compare_maps(newMap("a", 1, "b", 2), builder);
builder.remove("a");
compare_maps(newMap("a", null, "b", 2), builder);
builder.remove("b");
compare_maps(newMap("a", null), builder);
}
@Test
public void test_clear() {
GrainBuilder builder = new MockGrainBuilder("a", "x", "y");
builder.put("x", 8);
builder.put("y", 9);
builder.put("a", 1);
builder.put("c", 3);
builder.put("b", 2);
compare_maps(newMap("a", 1, "x", 8, "y", 9, "b", 2, "c", 3), builder);
builder.clear();
compare_maps(newMap("a", null, "x", null, "y", null), builder);
}
@Test
public void test_iterator_remove() {
GrainBuilder builder = new MockGrainBuilder("a", "x", "y");
builder.put("x", 8);
builder.put("y", 9);
builder.put("a", 1);
builder.put("c", 3);
builder.put("b", 2);
compare_maps(newMap("a", 1, "x", 8, "y", 9, "b", 2, "c", 3), builder);
for (MapIterator<String, Object> iter = builder.iterator(); iter.hasNext();) {
iter.next();
iter.remove();
}
compare_maps(newMap("a", null, "x", null, "y", null), builder);
}
@Test
public void test_entry_setValue() {
GrainBuilder builder = new MockGrainBuilder("a", "x", "y");
builder.put("x", 8);
builder.put("y", 9);
builder.put("a", 1);
builder.put("c", 3);
builder.put("b", 2);
compare_maps(newMap("a", 1, "x", 8, "y", 9, "b", 2, "c", 3), builder);
int i = 1;
for (MapIterator<String, Object> iter = builder.iterator(); iter.hasNext();) {
iter.next();
iter.entry().setValue(i++);
}
compare_maps(newMap("a", 1, "x", 2, "y", 3, "b", 4, "c", 5), builder);
}
}