Skip to content

Commit d91de7c

Browse files
committed
gson serialization testing/fixes
1 parent 6ffe8e2 commit d91de7c

File tree

5 files changed

+82
-33
lines changed

5 files changed

+82
-33
lines changed

src/main/kotlin/com/cjcrafter/openai/chat/ChatMessage.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ data class ChatMessage(var role: ChatUser, var content: String) {
3434
*/
3535
@JvmStatic
3636
fun String.toAssistantMessage(): ChatMessage {
37-
return ChatMessage(ChatUser.SYSTEM, this)
37+
return ChatMessage(ChatUser.ASSISTANT, this)
3838
}
3939
}
4040
}

src/main/kotlin/com/cjcrafter/openai/gson/ChatChoiceChunkAdapter.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ class ChatChoiceChunkAdapter : TypeAdapter<ChatChoiceChunk?>() {
2424
if (value.finishReason == null) {
2525
writer.nullValue()
2626
} else {
27-
writer.value(value.finishReason!!.name)
27+
writer.value(value.finishReason!!.name.lowercase())
2828
}
2929
writer.endObject()
3030
}

src/main/kotlin/com/cjcrafter/openai/gson/FinishReasonAdapter.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ class FinishReasonAdapter : TypeAdapter<FinishReason?>() {
1212
if (value == null) {
1313
writer.nullValue()
1414
} else {
15-
writer.value(value.name)
15+
writer.value(value.name.lowercase())
1616
}
1717
}
1818

Lines changed: 21 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,29 @@
1-
package com.cjcrafter.openai;
1+
package com.cjcrafter.openai
22

3-
import com.cjcrafter.openai.chat.*;
4-
import com.cjcrafter.openai.exception.InvalidRequestError;
5-
import io.github.cdimascio.dotenv.Dotenv;
6-
import org.junit.jupiter.api.Test;
3+
import com.cjcrafter.openai.chat.ChatMessage.Companion.toSystemMessage
4+
import com.cjcrafter.openai.chat.ChatRequest
5+
import com.cjcrafter.openai.exception.InvalidRequestError
6+
import io.github.cdimascio.dotenv.Dotenv
7+
import org.junit.jupiter.api.Assertions
8+
import org.junit.jupiter.api.Test
79

8-
import java.util.ArrayList;
9-
import java.util.List;
10-
11-
import static org.junit.jupiter.api.Assertions.*;
12-
13-
public class ExceptionTests {
10+
class ExceptionTests {
1411

1512
@Test
16-
void test_invalidModel() {
17-
String key = Dotenv.load().get("OPENAI_TOKEN");
18-
19-
String initialPrompt = "Just say hi";
20-
List<ChatMessage> messages = new ArrayList<>(List.of(new ChatMessage(ChatUser.SYSTEM, initialPrompt)));
21-
ChatRequest request = new ChatRequest("gpt-238974-invalid-model", messages);
22-
OpenAI openai = new OpenAI(key);
23-
24-
assertThrows(InvalidRequestError.class, () -> openai.createChatCompletion(request));
13+
fun test_invalidModel() {
14+
val key = Dotenv.load()["OPENAI_TOKEN"]
15+
val messages = mutableListOf("Just say hi".toSystemMessage())
16+
val request = ChatRequest("gpt-238974-invalid-model", messages)
17+
val openai = OpenAI(key)
18+
Assertions.assertThrows(InvalidRequestError::class.java) { openai.createChatCompletion(request) }
2519
}
2620

2721
@Test
28-
void test_invalidToken() {
29-
String key = "sk-Thisisaninvalidtoken";
30-
31-
String initialPrompt = "Just say hi";
32-
List<ChatMessage> messages = new ArrayList<>(List.of(new ChatMessage(ChatUser.SYSTEM, initialPrompt)));
33-
ChatRequest request = new ChatRequest("gpt-3.5-turbo", messages);
34-
OpenAI openai = new OpenAI(key);
35-
36-
assertThrows(InvalidRequestError.class, () -> openai.createChatCompletion(request));
22+
fun test_invalidToken() {
23+
val key = "sk-Thisisaninvalidtoken"
24+
val messages = mutableListOf("Just say hi".toSystemMessage())
25+
val request = ChatRequest("gpt-3.5-turbo", messages)
26+
val openai = OpenAI(key)
27+
Assertions.assertThrows(InvalidRequestError::class.java) { openai.createChatCompletion(request) }
3728
}
38-
}
29+
}
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
package com.cjcrafter.openai
2+
3+
import com.cjcrafter.openai.chat.*
4+
import com.cjcrafter.openai.chat.ChatMessage.Companion.toAssistantMessage
5+
import com.cjcrafter.openai.chat.ChatMessage.Companion.toSystemMessage
6+
import com.google.gson.Gson
7+
import org.junit.jupiter.api.AfterEach
8+
import org.junit.jupiter.api.Assertions
9+
import org.junit.jupiter.api.BeforeEach
10+
import org.junit.jupiter.params.ParameterizedTest
11+
import org.junit.jupiter.params.provider.Arguments
12+
import org.junit.jupiter.params.provider.MethodSource
13+
import java.util.stream.Stream
14+
15+
class GsonTests {
16+
17+
private var gson: Gson? = null
18+
19+
@BeforeEach
20+
fun setUp() {
21+
gson = OpenAI.createGson()
22+
}
23+
24+
@AfterEach
25+
fun tearDown() {
26+
gson = null
27+
}
28+
29+
@ParameterizedTest
30+
@MethodSource("provide_json")
31+
fun test_toJson(json: String, obj: Any, clazz: Class<Any>) {
32+
Assertions.assertEquals(json, gson!!.toJson(obj))
33+
}
34+
35+
@ParameterizedTest
36+
@MethodSource("provide_json")
37+
fun test_fromJson(json: String, obj: Any, clazz: Class<Any>) {
38+
Assertions.assertEquals(obj, gson!!.fromJson(json, clazz))
39+
}
40+
41+
companion object {
42+
@JvmStatic
43+
private fun provide_json(): Stream<Arguments> {
44+
return Stream.of(
45+
Arguments.of(
46+
"{\"model\":\"gpt-3.5-turbo\",\"messages\":[{\"role\":\"system\",\"content\":\"You are a ChatBot\"}]}",
47+
ChatRequest(model="gpt-3.5-turbo", messages = mutableListOf("You are a ChatBot".toSystemMessage())),
48+
ChatRequest::class.java
49+
),
50+
Arguments.of(
51+
"{\"id\":\"chatcmpl-123\",\"created\":1677652288,\"choices\":[{\"index\":0,\"message\":{\"role\":\"assistant\",\"content\":\"Hello there, how may I assist you today?\"},\"finish_reason\":\"stop\"}],\"usage\":{\"prompt_tokens\":9,\"completion_tokens\":12,\"total_tokens\":21}}",
52+
ChatResponse("chatcmpl-123", 1677652288L, mutableListOf(ChatChoice(0, "Hello there, how may I assist you today?".toAssistantMessage(), FinishReason.STOP)), ChatUsage(9, 12, 21)),
53+
ChatResponse::class.java
54+
)
55+
)
56+
}
57+
}
58+
}

0 commit comments

Comments
 (0)