Skip to content

Commit 4c63372

Browse files
authored
feat: add ada_get_schema_type (#503)
* feat: add ada_get_schema_type * fixup: code review
1 parent fa4ae29 commit 4c63372

File tree

3 files changed

+58
-0
lines changed

3 files changed

+58
-0
lines changed

include/ada_c.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ ada_string ada_get_pathname(ada_url result);
6969
ada_string ada_get_search(ada_url result);
7070
ada_string ada_get_protocol(ada_url result);
7171
uint8_t ada_get_host_type(ada_url result);
72+
uint8_t ada_get_schema_type(ada_url result);
7273

7374
// url_aggregator setters
7475
// if ada_is_valid(result)) is false, the setters have no effect

src/ada_c.cpp

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,14 @@ uint8_t ada_get_host_type(ada_url result) noexcept {
218218
return r->host_type;
219219
}
220220

221+
uint8_t ada_get_schema_type(ada_url result) noexcept {
222+
ada::result<ada::url_aggregator>& r = get_instance(result);
223+
if (!r) {
224+
return 0;
225+
}
226+
return r->type;
227+
}
228+
221229
bool ada_set_href(ada_url result, const char* input, size_t length) noexcept {
222230
ada::result<ada::url_aggregator>& r = get_instance(result);
223231
if (!r) {

tests/ada_c.cpp

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -209,3 +209,52 @@ TEST(ada_c, ada_clear_search) {
209209
ada_free(out);
210210
SUCCEED();
211211
}
212+
213+
TEST(ada_c, ada_get_schema_type) {
214+
std::string_view input;
215+
ada_url out;
216+
217+
input = "http://www.google.com";
218+
out = ada_parse(input.data(), input.size());
219+
ASSERT_TRUE(ada_is_valid(out));
220+
ASSERT_EQ(ada_get_schema_type(out), 0);
221+
222+
input = "notspecial://www.google.com";
223+
ada_free(out);
224+
out = ada_parse(input.data(), input.size());
225+
ASSERT_TRUE(ada_is_valid(out));
226+
ASSERT_EQ(ada_get_schema_type(out), 1);
227+
228+
input = "https://www.google.com";
229+
ada_free(out);
230+
out = ada_parse(input.data(), input.size());
231+
ASSERT_TRUE(ada_is_valid(out));
232+
ASSERT_EQ(ada_get_schema_type(out), 2);
233+
234+
input = "ws://www.google.com/ws";
235+
ada_free(out);
236+
out = ada_parse(input.data(), input.size());
237+
ASSERT_TRUE(ada_is_valid(out));
238+
ASSERT_EQ(ada_get_schema_type(out), 3);
239+
240+
input = "ftp://www.google.com/file.txt";
241+
ada_free(out);
242+
out = ada_parse(input.data(), input.size());
243+
ASSERT_TRUE(ada_is_valid(out));
244+
ASSERT_EQ(ada_get_schema_type(out), 4);
245+
246+
input = "wss://www.google.com/wss";
247+
ada_free(out);
248+
out = ada_parse(input.data(), input.size());
249+
ASSERT_TRUE(ada_is_valid(out));
250+
ASSERT_EQ(ada_get_schema_type(out), 5);
251+
252+
input = "file:///foo/bar";
253+
ada_free(out);
254+
out = ada_parse(input.data(), input.size());
255+
ASSERT_TRUE(ada_is_valid(out));
256+
ASSERT_EQ(ada_get_schema_type(out), 6);
257+
258+
ada_free(out);
259+
SUCCEED();
260+
}

0 commit comments

Comments
 (0)