@@ -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