Skip to content

Commit e223318

Browse files
Zzzodeanonrig
authored andcommitted
feat: Implement url_search_params::has(name, value)
According to https://url.spec.whatwg.org/#dom-urlsearchparams-has, we need to provide a `has` function that takes two argument `name` and `value`.
1 parent 4c72198 commit e223318

File tree

3 files changed

+22
-0
lines changed

3 files changed

+22
-0
lines changed

include/ada/url_search_params-inl.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,15 @@ inline bool url_search_params::has(const std::string_view key) noexcept {
9696
return entry != params.end();
9797
}
9898

99+
inline bool url_search_params::has(std::string_view key,
100+
std::string_view value) noexcept {
101+
auto entry =
102+
std::find_if(params.begin(), params.end(), [&key, &value](auto &param) {
103+
return param.first == key && param.second == value;
104+
});
105+
return entry != params.end();
106+
}
107+
99108
inline std::string url_search_params::to_string() {
100109
auto character_set = ada::character_sets::WWW_FORM_URLENCODED_PERCENT_ENCODE;
101110
std::string out{};

include/ada/url_search_params.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ struct url_search_params {
5757
* @see https://url.spec.whatwg.org/#dom-urlsearchparams-has
5858
*/
5959
inline bool has(std::string_view key) noexcept;
60+
inline bool has(std::string_view key, std::string_view value) noexcept;
6061

6162
/**
6263
* @see https://url.spec.whatwg.org/#dom-urlsearchparams-set

tests/url_search_params.cpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,3 +155,15 @@ TEST(url_search_params, string_constructor_with_edge_cases) {
155155
ASSERT_TRUE(p.has("møø"));
156156
SUCCEED();
157157
}
158+
159+
TEST(url_search_params, has) {
160+
auto search_params = ada::url_search_params("key1=value1&key2=value2");
161+
ASSERT_TRUE(search_params.has("key1"));
162+
ASSERT_TRUE(search_params.has("key2"));
163+
ASSERT_TRUE(search_params.has("key1", "value1"));
164+
ASSERT_TRUE(search_params.has("key2", "value2"));
165+
ASSERT_TRUE(!search_params.has("key3"));
166+
ASSERT_TRUE(!search_params.has("key1", "value2"));
167+
ASSERT_TRUE(!search_params.has("key3", "value3"));
168+
SUCCEED();
169+
}

0 commit comments

Comments
 (0)