/*
* @(#)BaseHasShardIdListTest.java 2013年8月30日 下午22:33:33
*
* Copyright (c) 2011-2013 Makersoft.org all rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
*
*/
package org.makersoft.shards.unit;
import java.util.List;
import org.junit.Assert;
import org.junit.Test;
import org.makersoft.shards.BaseHasShardIdList;
import org.makersoft.shards.ShardId;
import org.makersoft.shards.utils.Lists;
/**
* @author Feng Kuok
*/
public class BaseHasShardIdListTest {
@Test
public void testShardIdListUnmodifiable() {
List<ShardId> shardIdList = null;
try {
new MyBaseHasShardIdList(shardIdList);
Assert.fail("expected npe");
} catch (IllegalArgumentException npe) {
// good
}
shardIdList = Lists.newArrayList();
try {
new MyBaseHasShardIdList(shardIdList);
Assert.fail("expected iae");
} catch (IllegalArgumentException iae) {
// good
}
shardIdList.add(new ShardId(0));
BaseHasShardIdList bhsil = new MyBaseHasShardIdList(shardIdList);
ShardId anotherId = new ShardId(1);
shardIdList.add(anotherId);
// demonstrate that external changes to the list that was passed in
// aren't reflected inside the object
Assert.assertFalse(bhsil.getShardIds().contains(anotherId));
}
private static final class MyBaseHasShardIdList extends BaseHasShardIdList {
protected MyBaseHasShardIdList(List<ShardId> shardIds) {
super(shardIds);
}
}
}