package com.mogujie.service.tsharding.test.client;
import com.mogujie.trade.tsharding.client.ShardingCaculator;
import org.junit.Assert;
import org.junit.Test;
/**
* @auther qigong on 5/29/15 8:28 AM.
*/
public class ShardingCaculatorTest {
@Test
public void testCaculateTableName() {
ShardingparaObj para = new ShardingparaObj();
para.setName("buyerId");
para.setValue(100000000L);
Assert.assertEquals("TestTable0000", ShardingCaculator.caculateTableName(para.getValue()));
para.setValue(100000128L);
Assert.assertEquals("TestTable0128", ShardingCaculator.caculateTableName(para.getValue()));
para.setValue(100000512L);
Assert.assertEquals("TestTable0000", ShardingCaculator.caculateTableName(para.getValue()));
}
@Test
public void testCaculateSchemaName() {
ShardingparaObj para = new ShardingparaObj();
para.setName("sellerUserId");
para.setValue(100000000L);
Assert.assertEquals("sellertestschema0000", ShardingCaculator.caculateSchemaName(para.getName(), para.getValue()));
para.setValue(100000128L);
Assert.assertEquals("sellertestschema0002", ShardingCaculator.caculateSchemaName(para.getName(), para.getValue()));
para.setName("buyerUserId");
para.setValue(100000512L);
Assert.assertEquals("testschema0000", ShardingCaculator.caculateSchemaName(para.getName(), para.getValue()));
}
@Test
public void testCaculateDatasourceName() {
ShardingparaObj para = new ShardingparaObj();
para.setName("sellerUserId");
para.setValue(100000000L);
Assert.assertEquals("seller_ds_0", ShardingCaculator.caculateDatasourceName(para.getName(), para.getValue()));
para.setValue(100000128L);
Assert.assertEquals("seller_ds_0", ShardingCaculator.caculateDatasourceName(para.getName(), para.getValue()));
para.setName("buyerUserId");
para.setValue(100000511L);
Assert.assertEquals("buyer_ds_1", ShardingCaculator.caculateDatasourceName(para.getName(), para.getValue()));
}
@Test
public void testgetNumberWithZeroSuffix(){
Assert.assertEquals("0100", ShardingCaculator.getNumberWithZeroSuffix(100L));
}
private class ShardingparaObj {
private String name;
private Long value;
public void setName(String name) {
this.name = name;
}
public void setValue(Long value) {
this.value = value;
}
public String getName() {
return name;
}
public Long getValue() {
return value;
}
}
}