package org.ggp.base.util.presence;
import org.junit.Assert;
import org.junit.Test;
/**
* Unit tests for the BaseCryptography class, which implements
* a wrapper for the use of asymmetric public/private key cryptography
* for use in GGP.
*
* @author Sam
*/
public class InfoResponseTest extends Assert {
@Test
public void testFormingInfoResponse() {
InfoResponse response = new InfoResponse();
assertEquals(response.toSymbol().toString(), "( )");
response.setName("PlayerName");
assertEquals(response.toSymbol().toString(), "( ( name PlayerName ) )");
response.setStatus("available");
assertEquals(response.toSymbol().toString(), "( ( name PlayerName ) ( status available ) )");
}
@Test
public void testParsingInfoResponse() {
String input = "( ( name PlayerName ) ( status available ) )";
InfoResponse response = InfoResponse.create(input);
assertEquals(response.getName(), "PlayerName");
assertEquals(response.getStatus(), "available");
}
@Test
public void testParsingInfoResponseWithExtras() {
String input = "( whatsup ( name PlayerName ) ( ( foo bar ) baz ) ( status available ) zzq )";
InfoResponse response = InfoResponse.create(input);
assertEquals(response.getName(), "PlayerName");
assertEquals(response.getStatus(), "available");
}
@Test
public void testParsingInfoResponseWithNoStatus() {
String input = "( whatsup ( ) ( baz ) ( name PlayerName ) )";
InfoResponse response = InfoResponse.create(input);
assertEquals(response.getName(), "PlayerName");
assertEquals(response.getStatus(), null);
}
@Test
public void testParsingInfoResponseWithNoInfo() {
String input = "( )";
InfoResponse response = InfoResponse.create(input);
assertEquals(response.getName(), null);
assertEquals(response.getStatus(), null);
}
@Test
public void testParsingBadlyFormedInfoResponse() {
String input = "(";
InfoResponse response = InfoResponse.create(input);
assertEquals(response.getName(), null);
assertEquals(response.getStatus(), null);
}
@Test
public void testParsingStatusOnlyInfoResponse() {
String input = "busy";
InfoResponse response = InfoResponse.create(input);
assertEquals(response.getName(), null);
assertEquals(response.getStatus(), "busy");
}
@Test
public void testParsingInfoResponseLegacyJSON() {
String input = "{\"name\":\"PlayerName\",\"status\":\"available\"}";
InfoResponse response = InfoResponse.create(input);
assertEquals(response.getName(), null);
assertEquals(response.getStatus(), input);
}
}