Beetle.Redis第一阶段的功能基本完成,主要实现了一些简单的结构处理,GET,SET MGET,MHSET,MHGET和LIST相关的一些常用结构。已经跑通的测试用例
namespace Beetle.RedisClient.TestLib
{
[TestClass]
public class RedisClientTest
{
private static Beetle.Redis.RedisClient db = new Redis.RedisClient("redisClientSection");
[TestMethod]
public void Set_GET_String()
{
string key = "Set_GET_String";
string value = "henry";
db.SetString(key, value);
Assert.AreEqual(value, db.GetString(key));
}
[TestMethod]
public void Set_Get_Json()
{
string key = "get_set_json";
UserBase user = new UserBase();
user.Name = "henry";
user.City = "gz";
user.Counrty = "cn";
db.SetJson<UserBase>(key, user);
UserBase result = db.GetJson<UserBase>(key);
Assert.AreEqual(user.Name, result.Name);
}
[TestMethod]
public void Get_Set_Protobuf()
{
string key = "get_set_protobuf";
UserBase user = new UserBase();
user.Name = "henry";
user.City = "gz";
user.Counrty = "cn";
db.SetProbobuf<UserBase>(key, user);
UserBase result = db.GetProtobuf<UserBase>(key);
Assert.AreEqual(user.Name, result.Name);
}
[TestMethod]
public void Get_Strings()
{
string[] keys = new string[] { "_test1", "_test2", "_test3" };
string[] values = new string[] { "_test1", "_test2", "_test3" };
for (int i = 0; i < keys.Length; i++)
{
db.SetString(keys[i], values[i]);
}
IList<string> result = db.GetStrings(keys);
for (int i = 0; i < keys.Length; i++)
{
Assert.AreEqual(result[i], values[i]);
}
}
[TestMethod]
public void Get_Jsons()
{
string[] keys = new string[] { "json_test1", "json_test2", "json_test3" };
UserBase[] values = new UserBase[] {
new UserBase{ Name="u1"},
new UserBase{ Name="u2"},
new UserBase{ Name="u2"}
};
for (int i = 0; i < keys.Length; i++)
{
db.SetJson<UserBase>(keys[i], values[i]);
}
IList<object> result= db.GetJsons<UserBase, UserBase, UserBase>(keys[0], keys[1], keys[2]);
for (int i = 0; i < keys.Length; i++)
{
Assert.AreEqual(((UserBase)result[i]).Name, values[i].Name);
}
}
[TestMethod]
public void Get_Protobufs()
{
string[] keys = new string[] { "protobuf_test1", "protobuf_test2", "protobuf_test3" };
UserBase[] values = new UserBase[] {
new UserBase{ Name="u1"},
new UserBase{ Name="u2"},
new UserBase{ Name="u2"}
};
for (int i = 0; i < keys.Length; i++)
{
db.SetProbobuf<UserBase>(keys[i], values[i]);
}
IList<object> result = db.GetProtobufs<UserBase, UserBase, UserBase>(keys[0], keys[1], keys[2]);
for (int i = 0; i < keys.Length; i++)
{
Assert.AreEqual(((UserBase)result[i]).Name, values[i].Name);
}
}
[TestMethod]
public void String_Record()
{
string name = "NAME";
string qq = "QQ";
StringRecord sr = new StringRecord("henry",db);
sr[name] = "henryfan";
sr[qq] = "28304340";
sr.Save();
sr = new StringRecord("henry", db);
sr.Load();
Assert.AreEqual(sr[name], "henryfan");
Assert.AreEqual(sr[qq], "28304340");
}
[TestMethod]
public void Json_Record()
{
JsonRecord jr = new JsonRecord("json_henry",db);
UserBase user = new UserBase { Name="herny" };
Contact con = new Contact { EMail="henryfan@msn.com", QQ="28304340" };
jr.Set<UserBase>(user);
jr.Set<Contact>(con);
jr.Save();
jr = new JsonRecord("json_henry", db);
jr.Load<UserBase, Contact>();
Assert.AreEqual(jr.Get<UserBase>().Name,user.Name);
Assert.AreEqual(jr.Get<Contact>().QQ,con.QQ);
}
[TestMethod]
public void Protobuf_Record()
{
ProtobufRecord jr = new ProtobufRecord("protobuf_henry", db);
UserBase user = new UserBase { Name = "herny" };
Contact con = new Contact { EMail = "henryfan@msn.com", QQ = "28304340" };
jr.Set<UserBase>(user);
jr.Set<Contact>(con);
jr.Save();
jr = new ProtobufRecord("protobuf_henry", db);
jr.Load<UserBase, Contact>();
Assert.AreEqual(jr.Get<UserBase>().Name, user.Name);
Assert.AreEqual(jr.Get<Contact>().QQ, con.QQ);
}
[TestMethod]
public void StringList_Pop_Push()
{
StringList sl = new StringList("_list",db);
sl.Clear();
string value = "henry";
sl.Push(value);
Assert.AreEqual("henry", sl.Pop());
}
[TestMethod]
public void StringList_Add_Remove()
{
StringList sl = new StringList("_list", db);
sl.Clear();
string value = "henry";
sl.Add(value);
Assert.AreEqual("henry", sl.Remove());
}
[TestMethod]
public void StringList_ToList()
{
StringList sl = new StringList("_list", db);
sl.Clear();
string[] values = new string[] {"a","b","c","d" };
foreach (string item in values)
{
sl.Add(item);
}
IList<string> result = sl.ToList();
for (int i = 0; i < result.Count; i++)
{
Assert.AreEqual(values[i], result[i]);
}
result = sl.ToList(1, 2);
for (int i = 1; i <= 2; i++)
{
Assert.AreEqual(values[i], result[i-1]);
}
}
[TestMethod]
public void JsonList_Pop_Push()
{
JsonList<UserBase> sl = new JsonList<UserBase>("json_list", db);
sl.Clear();
UserBase user = new UserBase { Name="henry" };
sl.Push(user);
user = new UserBase { Name = "henry1" };
sl.Push(user);
Assert.AreEqual(user.Name, sl.Pop().Name);
}
[TestMethod]
public void JsonList_Add_Remove()
{
JsonList<UserBase> sl = new JsonList<UserBase>("json_list", db);
sl.Clear();
UserBase user = new UserBase { Name = "henry" };
sl.Add(user);
user = new UserBase { Name = "henry1" };
sl.Add(user);
Assert.AreEqual(user.Name, sl.Remove().Name);
}
[TestMethod]
public void JsonList_ToList()
{
JsonList<UserBase> sl = new JsonList<UserBase>("json_list", db);
sl.Clear();
UserBase[] values = new UserBase[] {
new UserBase{ Name="a"},
new UserBase{ Name="b"},
new UserBase{ Name="c"},
new UserBase{ Name="d"}
};
foreach (UserBase item in values)
{
sl.Add(item);
}
IList<UserBase> result = sl.ToList();
for (int i = 0; i < result.Count; i++)
{
Assert.AreEqual(values[i].Name, result[i].Name);
}
result = sl.ToList(1, 2);
for (int i = 1; i <= 2; i++)
{
Assert.AreEqual(values[i].Name, result[i - 1].Name);
}
}
[TestMethod]
public void ProtobufList_Pop_Push()
{
ProtobufList<UserBase> sl = new ProtobufList<UserBase>("protobuf_list", db);
sl.Clear();
UserBase user = new UserBase { Name = "henry" };
sl.Push(user);
user = new UserBase { Name = "henry1" };
sl.Push(user);
Assert.AreEqual(user.Name, sl.Pop().Name);
}
[TestMethod]
public void ProtobufList_Add_Remove()
{
ProtobufList<UserBase> sl = new ProtobufList<UserBase>("protobuf_list", db);
sl.Clear();
UserBase user = new UserBase { Name = "henry" };
sl.Add(user);
user = new UserBase { Name = "henry1" };
sl.Add(user);
Assert.AreEqual(user.Name, sl.Remove().Name);
}
[TestMethod]
public void ProtobufList_ToList()
{
ProtobufList<UserBase> sl = new ProtobufList<UserBase>("protobuf_list", db);
sl.Clear();
UserBase[] values = new UserBase[] {
new UserBase{ Name="a"},
new UserBase{ Name="b"},
new UserBase{ Name="c"},
new UserBase{ Name="d"}
};
foreach (UserBase item in values)
{
sl.Add(item);
}
IList<UserBase> result = sl.ToList();
for (int i = 0; i < result.Count; i++)
{
Assert.AreEqual(values[i].Name, result[i].Name);
}
result = sl.ToList(1, 2);
for (int i = 1; i <= 2; i++)
{
Assert.AreEqual(values[i].Name, result[i - 1].Name);
}
}
}
}