Skip to content

Commit 012d80c

Browse files
anonrigsteveklabnik
andcommitted
feat: add ada_copy c function
Co-authored-by: Steve Klabnik <[email protected]>
1 parent 38a92c1 commit 012d80c

File tree

3 files changed

+23
-0
lines changed

3 files changed

+23
-0
lines changed

include/ada_c.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ bool ada_can_parse_with_base(const char* input, size_t input_length,
5151

5252
void ada_free(ada_url result);
5353
void ada_free_owned_string(ada_owned_string owned);
54+
ada_url ada_copy(ada_url input);
5455

5556
bool ada_is_valid(ada_url result);
5657

src/ada_c.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,11 @@ void ada_free(ada_url result) noexcept {
8888
delete r;
8989
}
9090

91+
ada_url ada_copy(ada_url input) noexcept {
92+
ada::result<ada::url_aggregator>& r = get_instance(input);
93+
return new ada::result<ada::url_aggregator>(r);
94+
}
95+
9196
bool ada_is_valid(ada_url result) noexcept {
9297
ada::result<ada::url_aggregator>& r = get_instance(result);
9398
return r.has_value();

tests/ada_c.cpp

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,23 @@ TEST(ada_c, ada_url_components) {
138138
SUCCEED();
139139
}
140140

141+
TEST(ada_c, ada_copy) {
142+
std::string lemire_blog = "https://lemire.me";
143+
std::string anonrig_blog = "https://yagiz.co";
144+
ada_url first = ada_parse(lemire_blog.data(), lemire_blog.length());
145+
ada_url second = ada_copy(first);
146+
147+
ASSERT_TRUE(ada_set_href(second, anonrig_blog.data(), anonrig_blog.size()));
148+
149+
ASSERT_EQ(convert_string(ada_get_href(first)), "https://lemire.me/");
150+
ASSERT_EQ(convert_string(ada_get_href(second)), "https://yagiz.co/");
151+
152+
ada_free(first);
153+
ada_free(second);
154+
155+
SUCCEED();
156+
}
157+
141158
TEST(ada_c, ada_idna) {
142159
std::string_view ascii_input = "straße.de";
143160
std::string_view unicode_input = "xn--strae-oqa.de";

0 commit comments

Comments
 (0)