-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathtest_sse.cpp
More file actions
76 lines (62 loc) · 2.26 KB
/
Copy pathtest_sse.cpp
File metadata and controls
76 lines (62 loc) · 2.26 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
import mcpplibs.tinyhttps;
import std;
#include <cassert>
#include "../test_print.hpp"
int main() {
using namespace mcpplibs::tinyhttps;
SseParser parser;
// Test 1: simple data event
auto events = parser.feed("data: hello\n\n");
assert(events.size() == 1);
assert(events[0].data == "hello");
assert(events[0].event == "message");
// Test 2: named event
events = parser.feed("event: ping\ndata: {}\n\n");
assert(events.size() == 1);
assert(events[0].event == "ping");
assert(events[0].data == "{}");
// Test 3: multi-line data
events = parser.feed("data: line1\ndata: line2\n\n");
assert(events.size() == 1);
assert(events[0].data == "line1\nline2");
// Test 4: chunked feed (data arrives in pieces)
parser.reset();
events = parser.feed("data: hel");
assert(events.empty());
events = parser.feed("lo\n\n");
assert(events.size() == 1);
assert(events[0].data == "hello");
// Test 5: multiple events in one chunk
events = parser.feed("data: first\n\ndata: second\n\n");
assert(events.size() == 2);
assert(events[0].data == "first");
assert(events[1].data == "second");
// Test 6: OpenAI format
parser.reset();
events = parser.feed("data: {\"choices\":[{\"delta\":{\"content\":\"Hi\"}}]}\n\n");
assert(events.size() == 1);
assert(events[0].data.find("Hi") != std::string::npos);
// Test 7: Anthropic format (event type line)
parser.reset();
events = parser.feed("event: content_block_delta\ndata: {\"type\":\"content_block_delta\"}\n\n");
assert(events.size() == 1);
assert(events[0].event == "content_block_delta");
// Test 8: [DONE] sentinel
parser.reset();
events = parser.feed("data: [DONE]\n\n");
assert(events.size() == 1);
assert(events[0].data == "[DONE]");
// Test 9: comment lines (start with :) ignored
parser.reset();
events = parser.feed(": this is a comment\ndata: actual\n\n");
assert(events.size() == 1);
assert(events[0].data == "actual");
// Test 10: id field
parser.reset();
events = parser.feed("id: 123\ndata: msg\n\n");
assert(events.size() == 1);
assert(events[0].id == "123");
assert(events[0].data == "msg");
println("test_sse: ALL PASSED");
return 0;
}