package JUnit;
import static org.junit.Assert.*;
import java.io.IOException;
import java.net.UnknownHostException;
import java.util.Calendar;
import org.junit.Test;
import protocol.ProtoHead;
import protocol.Data.ChatData.ChatItem;
import protocol.Data.GroupData.GroupItem;
import protocol.Msg.ChangeGroupMsg.ChangeGroupSync;
import protocol.Msg.CreateGroupChatMsg.CreateGroupChatReq;
import protocol.Msg.CreateGroupChatMsg.CreateGroupChatRsp;
import protocol.Msg.LoginMsg.LoginRsp;
import protocol.Msg.ReceiveChatMsg.ReceiveChatSync;
import server.NetworkPacket;
import tools.DataTypeTranslater;
public class TestCreateGroupChatting {
private CreateGroupChatRsp createGroupChatting(ClientSocket clientSocket, String[] userList) throws IOException {
CreateGroupChatReq.Builder builder = CreateGroupChatReq.newBuilder();
for (String s : userList)
builder.addUserId(s);
clientSocket.writeToServer(NetworkPacket.packMessage(ProtoHead.ENetworkMessage.CREATE_GROUP_CHAT_REQ_VALUE, builder
.build().toByteArray()));
byte[] arrayBytes;
for (int i = 0; i < 10; i++) {
arrayBytes = clientSocket.readFromServerWithoutKeepAlive();
if (NetworkPacket.getMessageType(arrayBytes) != ProtoHead.ENetworkMessage.CREATE_GROUP_CHAT_RSP)
continue;
return CreateGroupChatRsp.parseFrom(NetworkPacket.getMessageObjectBytes(arrayBytes));
}
return null;
}
/**
* 测试正常情况
*
* @throws IOException
* @throws UnknownHostException
*/
@Test
public void test() throws UnknownHostException, IOException {
String user1 = "a", user2 = "b";
ClientSocket clientSocket1 = new ClientSocket();
ClientSocket clientSocket2 = new ClientSocket();
// user1 登陆
System.out.println(user1 + " login");
LoginRsp.ResultCode resultCode = clientSocket1.login(user1, user1);
assertEquals(resultCode, LoginRsp.ResultCode.SUCCESS);
System.out.println(resultCode);
// user2登陆
System.out.println(user2 + " login");
assertEquals(clientSocket2.login(user2, user2), LoginRsp.ResultCode.SUCCESS);
// 创建成功?
System.out.println(user1 + " create Group");
CreateGroupChatRsp response = createGroupChatting(clientSocket1, new String[] { "b" });
assertEquals(response.getResultCode(), CreateGroupChatRsp.ResultCode.SUCCESS);
System.out.println("GroupId : " + response.getGroupChatId());
// user2接收到有新群消息
System.out.println(user2 + " Wait Message");
byte[] byteArray;
for (int i = 0; i < 2; i++) {
byteArray = clientSocket2.readFromServerWithoutKeepAlive();
System.out.println("Receive one Message!");
if (NetworkPacket.getMessageType(byteArray) == ProtoHead.ENetworkMessage.CHANGE_GROUP_SYNC) {
// 成员变化通知
System.out.println("成员变化通知");
ChangeGroupSync changeGroupSync = ChangeGroupSync.parseFrom(NetworkPacket.getMessageObjectBytes(byteArray));
GroupItem groupItem = changeGroupSync.getGroupItem();
System.out.println("CHANGE_GROUP_SYNC : " + user2 + " : " + ClientSocket.getGroupItemInfo(groupItem));
assertEquals(groupItem.getCreaterUserId(), user1);
assertEquals(groupItem.getMemberUserIdCount(), 2);
} else if (NetworkPacket.getMessageType(byteArray) == ProtoHead.ENetworkMessage.RECEIVE_CHAT_SYNC) {
ReceiveChatSync receiveChatting = ReceiveChatSync.parseFrom(NetworkPacket.getMessageObjectBytes(byteArray));
ChatItem chatItem2 = receiveChatting.getChatData(0);
// 收到群聊消息(A 我已经把 B,C 拉入群聊)
System.out.println("RECEIVE_CHAT_SYNC : " + user2 + " : " + ClientSocket.getChatItemInfo(chatItem2));
}
}
clientSocket1.close();
clientSocket2.close();
}
}