diff options
author | Michele Papalini <micpapal+fdio@cisco.com> | 2017-02-24 08:00:33 +0000 |
---|---|---|
committer | Gerrit Code Review <gerrit@fd.io> | 2017-02-24 08:00:33 +0000 |
commit | 4df7f4cc98b6288177df256e1db70ddc3f7d00db (patch) | |
tree | 55e71277b419e4830ae641868ab8e751c8b86972 /libparc/parc/algol/test/test_parc_URI.c | |
parent | f28308bd99381ef5f1e178e2e1f870f245e35873 (diff) | |
parent | ec688b4723a041044226358bcd4dd6e2da39da49 (diff) |
Merge "Initial commit: cframework. Longbow and Libparc" into cframework/master
Diffstat (limited to 'libparc/parc/algol/test/test_parc_URI.c')
-rw-r--r-- | libparc/parc/algol/test/test_parc_URI.c | 642 |
1 files changed, 642 insertions, 0 deletions
diff --git a/libparc/parc/algol/test/test_parc_URI.c b/libparc/parc/algol/test/test_parc_URI.c new file mode 100644 index 00000000..5050deb3 --- /dev/null +++ b/libparc/parc/algol/test/test_parc_URI.c @@ -0,0 +1,642 @@ +/* + * Copyright (c) 2017 Cisco and/or its affiliates. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * + */ +#include "../parc_URI.c" +#include <LongBow/unit-test.h> + +#include <stdint.h> + +#include <parc/algol/parc_Hash.h> +#include <parc/algol/parc_SafeMemory.h> +#include <parc/testing/parc_ObjectTesting.h> + +#include <parc/algol/parc_Hash.h> + +#include "_test_parc_URI.h" + +LONGBOW_TEST_RUNNER(parcURI) +{ + LONGBOW_RUN_TEST_FIXTURE(parcURI); +} + +LONGBOW_TEST_RUNNER_SETUP(parcURI) +{ + return LONGBOW_STATUS_SUCCEEDED; +} + +LONGBOW_TEST_RUNNER_TEARDOWN(parcURI) +{ + uint32_t outstandingAllocations = parcSafeMemory_ReportAllocation(STDERR_FILENO); + if (outstandingAllocations != 0) { + printf("Tests leak memory by %d allocations\n", outstandingAllocations); + return LONGBOW_STATUS_MEMORYLEAK; + } + return LONGBOW_STATUS_SUCCEEDED; +} + +LONGBOW_TEST_FIXTURE(parcURI) +{ + LONGBOW_RUN_TEST_CASE(parcURI, parseScheme); + LONGBOW_RUN_TEST_CASE(parcURI, parseScheme_Only); + LONGBOW_RUN_TEST_CASE(parcURI, parseScheme_BadScheme); + LONGBOW_RUN_TEST_CASE(parcURI, parseScheme_EmptyScheme); + + LONGBOW_RUN_TEST_CASE(parcURI, parseAuthority); + LONGBOW_RUN_TEST_CASE(parcURI, parseAuthority_NoAuthority); + LONGBOW_RUN_TEST_CASE(parcURI, parseAuthority_NoPath); + + LONGBOW_RUN_TEST_CASE(parcURI, parcURI_Acquire); + + LONGBOW_RUN_TEST_CASE(parcURI, parcURI_AuthorityEquals_SamePointer); + LONGBOW_RUN_TEST_CASE(parcURI, parcURI_AuthorityEquals_NullPointers); + + LONGBOW_RUN_TEST_CASE(parcURI, parcURI_QueryEquals_SamePointer); + LONGBOW_RUN_TEST_CASE(parcURI, parcURI_QueryEquals_NullPointers); + + LONGBOW_RUN_TEST_CASE(parcURI, parcURI_FragmentEquals_SamePointer); + LONGBOW_RUN_TEST_CASE(parcURI, parcURI_FragmentEquals_NullPointers); + + LONGBOW_RUN_TEST_CASE(parcURI, parcURI_SchemeEquals_SamePointer); + LONGBOW_RUN_TEST_CASE(parcURI, parcURI_SchemeEquals_NullPointers); + + LONGBOW_RUN_TEST_CASE(parcURI, parcURI_Parse); + LONGBOW_RUN_TEST_CASE(parcURI, parcURI_Parse_NoScheme); + LONGBOW_RUN_TEST_CASE(parcURI, parcURI_Parse_SchemeOnly); + + LONGBOW_RUN_TEST_CASE(parcURI, parcURI_SetScheme); + LONGBOW_RUN_TEST_CASE(parcURI, parcURI_SetScheme_Reset); + LONGBOW_RUN_TEST_CASE(parcURI, parcURI_SetScheme_Resetting); + + LONGBOW_RUN_TEST_CASE(parcURI, parcURI_SetFragment); + LONGBOW_RUN_TEST_CASE(parcURI, parcURI_SetFragment_Reset); + LONGBOW_RUN_TEST_CASE(parcURI, parcURI_SetFragment_Resetting); + + LONGBOW_RUN_TEST_CASE(parcURI, parcURI_SetQuery); + LONGBOW_RUN_TEST_CASE(parcURI, parcURI_SetQuery_Reset); + LONGBOW_RUN_TEST_CASE(parcURI, parcURI_SetQuery_Resetting); + + LONGBOW_RUN_TEST_CASE(parcURI, parcURI_SetAuthority); + LONGBOW_RUN_TEST_CASE(parcURI, parcURI_SetAuthority_Reset); + LONGBOW_RUN_TEST_CASE(parcURI, parcURI_SetAuthority_Resetting); + + LONGBOW_RUN_TEST_CASE(parcURI, parcURI_Equals_Contract); + + LONGBOW_RUN_TEST_CASE(parcURI, parcURI_GetPath); + LONGBOW_RUN_TEST_CASE(parcURI, parcURI_GetQuery); + LONGBOW_RUN_TEST_CASE(parcURI, parcURI_GetFragment); + LONGBOW_RUN_TEST_CASE(parcURI, parcURI_Copy); + LONGBOW_RUN_TEST_CASE(parcURI, parcURI_ToString_Full); + + LONGBOW_RUN_TEST_CASE(parcURI, PARCURI_ToString_SchemeOnly); + LONGBOW_RUN_TEST_CASE(parcURI, PARCURI_ToString_NoAuthority); +} + +LONGBOW_TEST_FIXTURE_SETUP(parcURI) +{ + return LONGBOW_STATUS_SUCCEEDED; +} + +LONGBOW_TEST_FIXTURE_TEARDOWN(parcURI) +{ + return LONGBOW_STATUS_SUCCEEDED; +} + +LONGBOW_TEST_CASE(parcURI, parcURI_Acquire) +{ + char *uriString = URI_SCHEME "://" URI_AUTHORITY "/" URI_PATH_SEGMENT "/" URI_PATH_SEGMENT "?" URI_QUERY "#" URI_FRAGMENT; + + uriString = parcMemory_StringDuplicate(uriString, strlen(uriString)); + + PARCURI *uri = parcURI_Parse(uriString); + + PARCURI *handle = parcURI_Acquire(uri); + + assertTrue(parcURI_Equals(uri, handle), "Expected URI and acquired handle to be equal"); + + parcURI_Release(&handle); + parcURI_Release(&uri); + parcMemory_Deallocate((void **) &uriString); +} + +LONGBOW_TEST_CASE(parcURI, parcURI_AuthorityEquals_SamePointer) +{ + char *authority = "authority@auth"; + assertTrue(_parcURI_AuthorityEquals(authority, authority), + "Expected authorities to be equal since they're the same pointers: %p - %p", + (void *) authority, (void *) authority); +} + +LONGBOW_TEST_CASE(parcURI, parcURI_AuthorityEquals_NullPointers) +{ + char *authority = "authority@auth"; + assertFalse(_parcURI_AuthorityEquals(NULL, authority), "Expected authorities to not be equal since one is NULL"); + assertFalse(_parcURI_AuthorityEquals(authority, NULL), "Expected authorities to not be equal since one is NULL"); + assertTrue(_parcURI_AuthorityEquals(NULL, NULL), "Expected authorities to be equal since both are NULL"); +} + +LONGBOW_TEST_CASE(parcURI, parcURI_QueryEquals_SamePointer) +{ + char *query = "query"; + assertTrue(_parcURI_QueryEquals(query, query), + "Expected queries to be equal since they're the same pointers: %p - %p", + (void *) query, (void *) query); +} + +LONGBOW_TEST_CASE(parcURI, parcURI_QueryEquals_NullPointers) +{ + char *query = "query"; + assertFalse(_parcURI_QueryEquals(NULL, query), "Expected queries to not be equal since one is NULL"); + assertFalse(_parcURI_QueryEquals(query, NULL), "Expected queries to not be equal since one is NULL"); + assertTrue(_parcURI_QueryEquals(NULL, NULL), "Expected queries to be equal since both are NULL"); +} + +LONGBOW_TEST_CASE(parcURI, parcURI_FragmentEquals_SamePointer) +{ + char *fragment = "fragment"; + assertTrue(_parcURI_FragmentEquals(fragment, fragment), + "Expected fragments to be equal since they're the same pointers: %p - %p", + (void *) fragment, (void *) fragment); +} + +LONGBOW_TEST_CASE(parcURI, parcURI_FragmentEquals_NullPointers) +{ + char *fragment = "fragment"; + assertFalse(_parcURI_FragmentEquals(NULL, fragment), "Expected fragments to not be equal since one is NULL"); + assertFalse(_parcURI_FragmentEquals(fragment, NULL), "Expected fragments to not be equal since one is NULL"); + assertTrue(_parcURI_FragmentEquals(NULL, NULL), "Expected fragments to be equal since both are NULL"); +} + +LONGBOW_TEST_CASE(parcURI, parcURI_SchemeEquals_SamePointer) +{ + char *scheme = "scheme"; + assertTrue(_parcURI_SchemeEquals(scheme, scheme), + "Expected schemes to be equal since they're the same pointers: %p - %p", + (void *) scheme, (void *) scheme); +} + +LONGBOW_TEST_CASE(parcURI, parcURI_SchemeEquals_NullPointers) +{ + char *scheme = "scheme"; + assertFalse(_parcURI_SchemeEquals(NULL, scheme), "Expected schemes to not be equal since one is NULL"); + assertFalse(_parcURI_SchemeEquals(scheme, NULL), "Expected schemes to not be equal since one is NULL"); + assertTrue(_parcURI_SchemeEquals(NULL, NULL), "Expected schemes to be equal since both are NULL"); +} + +LONGBOW_TEST_CASE(parcURI, parseScheme_EmptyScheme) +{ + const char *pointer; + char *actual = _parseScheme(":", &pointer); // empty string + assertNull(actual, "Parsed scheme should be NULL since the input string was empty."); + actual = _parseScheme("", &pointer); // empty string + assertNull(actual, "Parsed scheme should be NULL since the input string was empty."); +} + +LONGBOW_TEST_CASE(parcURI, parcURI_Parse) +{ + char *uriString = URI_SCHEME "://" URI_AUTHORITY "/" URI_PATH_SEGMENT "/" URI_PATH_SEGMENT "?" URI_QUERY "#" URI_FRAGMENT; + + uriString = parcMemory_StringDuplicate(uriString, strlen(uriString)); + + PARCURI *uri = parcURI_Parse(uriString); + assertNotNull(uri, "Expected non-null result for '%s'", uriString); + + memset(uriString, 0, strlen(uriString)); + + assertTrue(strcmp(URI_SCHEME, parcURI_GetScheme(uri)) == 0, + "Expected '%s', actual '%s'", URI_SCHEME, parcURI_GetScheme(uri)); + assertTrue(strcmp(URI_AUTHORITY, parcURI_GetAuthority(uri)) == 0, + "Expected '%s', actual '%s'", URI_AUTHORITY, parcURI_GetAuthority(uri)); + assertTrue(strcmp(URI_QUERY, parcURI_GetQuery(uri)) == 0, + "Expected '%s', actual '%s'", URI_QUERY, parcURI_GetQuery(uri)); + assertTrue(strcmp(URI_FRAGMENT, parcURI_GetFragment(uri)) == 0, + "Expected '%s', actual '%s'", URI_FRAGMENT, parcURI_GetFragment(uri)); + + parcMemory_Deallocate((void **) &uriString); + + parcURI_Release(&uri); + assertNull(uri, "Expected parcURI_Release to null the pointer."); +} + +LONGBOW_TEST_CASE(parcURI, parcURI_Parse_NoScheme) +{ + char *uriString = "/" URI_PATH_SEGMENT; + + uriString = parcMemory_StringDuplicate(uriString, strlen(uriString)); + + PARCURI *uri = parcURI_Parse(uriString); + assertNull(uri, + "Expected null result for '%s'", uriString); + parcMemory_Deallocate((void **) &uriString); +} + +LONGBOW_TEST_CASE(parcURI, parcURI_Parse_SchemeOnly) +{ + char *uriString = URI_SCHEME ":"; + + uriString = parcMemory_StringDuplicate(uriString, strlen(uriString)); + + PARCURI *uri = parcURI_Parse(uriString); + assertNotNull(uri, + "Expected non-null result for '%s'", uriString); + + memset(uriString, 0, strlen(uriString)); + + assertTrue(strcmp(URI_SCHEME, parcURI_GetScheme(uri)) == 0, + "Expected '%s', actual '%s'", URI_SCHEME, parcURI_GetScheme(uri)); + assertNull(parcURI_GetAuthority(uri), + "Expected NULL, actual '%s'", parcURI_GetAuthority(uri)); + assertNull(parcURI_GetQuery(uri), + "Expected NULL, actual '%s'", parcURI_GetQuery(uri)); + assertNull(parcURI_GetFragment(uri), + "Expected NULL, actual '%s'", parcURI_GetFragment(uri)); + + parcMemory_Deallocate((void **) &uriString); + parcURI_Release(&uri); + assertNull(uri, + "Expected parcURI_Release to null the pointer."); +} + +LONGBOW_TEST_CASE(parcURI, parseScheme) +{ + const char *pointer; + char *actual = _parseScheme(URI_FULL, &pointer); + assertTrue(strcmp(URI_SCHEME, actual) == 0, + "Expected '%s' actual '%s'", URI_SCHEME, actual); + parcMemory_Deallocate((void **) &actual); +} + +LONGBOW_TEST_CASE(parcURI, parseScheme_Only) +{ + const char *pointer; + char *actual = _parseScheme(URI_SCHEME ":", &pointer); + assertTrue(strcmp(URI_SCHEME, actual) == 0, + "Expected '%s' actual '%s'", URI_SCHEME, actual); + parcMemory_Deallocate((void **) &actual); +} + +LONGBOW_TEST_CASE(parcURI, parseScheme_BadScheme) +{ + const char *pointer; + char *actual = _parseScheme("", &pointer); + assertNull(actual, + "Expected NULL actual '%s'", actual); +} + +LONGBOW_TEST_CASE(parcURI, PARCURI_GetAuthority) +{ + PARCURI *uri = parcURI_Parse(URI_SCHEME "://" URI_AUTHORITY "/" URI_PATH_SEGMENT "/" URI_PATH_SEGMENT "?" URI_QUERY "#" URI_FRAGMENT); + const char *actual = parcURI_GetAuthority(uri); + assertTrue(strcmp(TEST_URI_AUTHORITY, actual) == 0, + "Expected '%s' actual '%s'", URI_AUTHORITY, actual); + parcURI_Release(&uri); +} + +LONGBOW_TEST_CASE(parcURI, parcURI_GetQuery) +{ + PARCURI *uri = parcURI_Parse(URI_SCHEME "://" URI_AUTHORITY "/" URI_PATH_SEGMENT "/" URI_PATH_SEGMENT "?" URI_QUERY "#" URI_FRAGMENT); + const char *actual = parcURI_GetQuery(uri); + assertTrue(strcmp(URI_QUERY, actual) == 0, + "Expected '%s' actual '%s'", URI_FRAGMENT, actual); + + parcURI_Release(&uri); +} + +LONGBOW_TEST_CASE(parcURI, parcURI_GetFragment) +{ + PARCURI *uri = parcURI_Parse(URI_SCHEME "://" URI_AUTHORITY "/" URI_PATH_SEGMENT "/" URI_PATH_SEGMENT "?" URI_QUERY "#" URI_FRAGMENT); + const char *actual = parcURI_GetFragment(uri); + assertTrue(strcmp(URI_FRAGMENT, actual) == 0, + "Expected '%s' actual '%s'", URI_FRAGMENT, actual); + parcURI_Release(&uri); +} + +LONGBOW_TEST_CASE(parcURI, parcURI_GetPath) +{ + char *uriString = URI_SCHEME "://" URI_AUTHORITY "/" URI_PATH_SEGMENT "/" URI_PATH_SEGMENT "?" URI_QUERY "#" URI_FRAGMENT; + PARCURI *uri = parcURI_Parse(uriString); + PARCURIPath *actual = parcURI_GetPath(uri); + + char *string = parcURIPath_ToString(actual); + + char *expected = URI_PATH_SEGMENT "/" URI_PATH_SEGMENT; + assertTrue(strcmp(expected, string) == 0, "Expected '%s' actual '%s'", expected, string); + + parcMemory_Deallocate((void **) &string); + parcURI_Release(&uri); +} + +LONGBOW_TEST_CASE(parcURI, parcURI_Copy) +{ + PARCURI *uri = parcURI_Parse(URI_SCHEME "://" URI_AUTHORITY "/" URI_PATH_SEGMENT "/" URI_PATH_SEGMENT "?" URI_QUERY "#" URI_FRAGMENT); + PARCURI *uri2 = parcURI_Copy(uri); + + char *expected = parcURI_ToString(uri); + char *actual = parcURI_ToString(uri2); + + assertTrue(strcmp(expected, actual) == 0, + "Expected '%s' actual '%s'", expected, actual); + parcMemory_Deallocate((void **) &expected); + parcMemory_Deallocate((void **) &actual); + parcURI_Release(&uri); + parcURI_Release(&uri2); +} + +LONGBOW_TEST_CASE(parcURI, parcURI_Equals_Contract) +{ + PARCURI *x = parcURI_Parse(URI_SCHEME "://" URI_AUTHORITY "/" URI_PATH_SEGMENT "?" URI_QUERY "#" URI_FRAGMENT); + PARCURI *y = parcURI_Parse(URI_SCHEME "://" URI_AUTHORITY "/" URI_PATH_SEGMENT "?" URI_QUERY "#" URI_FRAGMENT); + PARCURI *z = parcURI_Parse(URI_SCHEME "://" URI_AUTHORITY "/" URI_PATH_SEGMENT "?" URI_QUERY "#" URI_FRAGMENT); + PARCURI *u = parcURI_Parse(URI_SCHEME "://" URI_AUTHORITY "/" URI_PATH_SEGMENT "?" URI_QUERY); + + parcObjectTesting_AssertEqualsFunction(parcURI_Equals, x, y, z, u); + + parcURI_Release(&x); + parcURI_Release(&y); + parcURI_Release(&z); + parcURI_Release(&u); +} + +LONGBOW_TEST_CASE(parcURI, PARCURI_GetScheme) +{ + PARCURI *uri = parcURI_Parse(URI_SCHEME "://" URI_AUTHORITY "/" URI_PATH_SEGMENT "/" URI_PATH_SEGMENT "?" URI_QUERY "#" URI_FRAGMENT); + const char *actual = parcURI_GetScheme(uri); + assertTrue(strcmp(TEST_URI_SCHEME, actual) == 0, + "Expected '%s' actual '%s'", TEST_URI_SCHEME, actual); + parcURI_Release(&uri); +} + +LONGBOW_TEST_CASE(parcURI, PARCURI_Parse) +{ + PARCURI *uri = parcURI_Parse(URI_SCHEME "://" URI_AUTHORITY "/" URI_PATH_SEGMENT "/" URI_PATH_SEGMENT "?" URI_QUERY "#" URI_FRAGMENT); + assertNotNull(uri, + "Expected a non-null result."); + + assertTrue(strcmp(URI_SCHEME, parcURI_GetScheme(uri)) == 0, + "Expected '%s', actual '%s'", URI_SCHEME, parcURI_GetScheme(uri)); + assertTrue(strcmp(URI_AUTHORITY, parcURI_GetAuthority(uri)) == 0, + "Expected '%s', actual '%s'", URI_AUTHORITY, parcURI_GetAuthority(uri)); + assertTrue(strcmp(URI_QUERY, parcURI_GetQuery(uri)) == 0, + "Expected '%s', actual '%s'", URI_QUERY, parcURI_GetQuery(uri)); + assertTrue(strcmp(URI_FRAGMENT, parcURI_GetFragment(uri)) == 0, + "Expected '%s', actual '%s'", URI_FRAGMENT, parcURI_GetFragment(uri)); + + parcURI_Release(&uri); +} + +LONGBOW_TEST_CASE(parcURI, parcURI_ToString_Full) +{ + char *expected = URI_SCHEME "://" URI_AUTHORITY "/" URI_PATH_SEGMENT "/" URI_PATH_SEGMENT "?" URI_QUERY "#" URI_FRAGMENT; + + PARCURI *uri = parcURI_Parse(expected); + char *actual = parcURI_ToString(uri); + + assertTrue(strcmp(expected, actual) == 0, + "Expected '%s' actual '%s'", expected, actual); + parcMemory_Deallocate((void **) &actual); + parcURI_Release(&uri); +} + +LONGBOW_TEST_CASE(parcURI, PARCURI_ToString_SchemeOnly) +{ + char *expected = URI_SCHEME ":" "/"; + PARCURI *uri = parcURI_Parse(expected); + char *actual = parcURI_ToString(uri); + + assertTrue(strcmp(expected, actual) == 0, + "Expected '%s' actual '%s'", expected, actual); + parcURI_Release(&uri); + parcMemory_Deallocate((void **) &actual); +} + +LONGBOW_TEST_CASE(parcURI, PARCURI_ToString_NoAuthority) +{ + char *expected = URI_SCHEME ":" "/" URI_PATH_SEGMENT "/" URI_PATH_SEGMENT "?" URI_QUERY "#" URI_FRAGMENT; + PARCURI *uri = parcURI_Parse(expected); + char *actual = parcURI_ToString(uri); + + assertTrue(strcmp(expected, actual) == 0, + "Expected '%s' actual '%s'", expected, actual); + + parcURI_Release(&uri); + parcMemory_Deallocate((void **) &actual); +} + +LONGBOW_TEST_CASE(parcURI, parseAuthority) +{ + char *authority = "//" URI_AUTHORITY "/" URI_PATH_SEGMENT "/" URI_PATH_SEGMENT; + char *expected = URI_AUTHORITY; + + const char *pointer; + char *actual = _parseAuthority(authority, &pointer); + assertTrue(strcmp(expected, actual) == 0, + "Expected '%s' actual '%s'", expected, actual); + assertTrue(*pointer == '/', + "Expected '/' actual '%c'", *pointer); + parcMemory_Deallocate((void **) &actual); +} + +LONGBOW_TEST_CASE(parcURI, parseAuthority_NoAuthority) +{ + char *string = "/" URI_PATH_SEGMENT "/" URI_PATH_SEGMENT; + + const char *pointer; + char *actual = _parseAuthority(string, &pointer); + assertTrue(actual == NULL, + "Expected NULL actual '%s'", actual); + assertTrue(*pointer == '/', + "Expected '/' actual '%c'", *pointer); +} + +LONGBOW_TEST_CASE(parcURI, parcURI_SetScheme) +{ + char *scheme = "scheme"; + PARCURI *uri = parcURI_Create(); + _parcURI_SetScheme(uri, scheme); + + assertTrue(strcmp(scheme, parcURI_GetScheme(uri)) == 0, + "Expected %s actual %s", scheme, parcURI_GetScheme(uri)); + parcURI_Release(&uri); +} + +LONGBOW_TEST_CASE(parcURI, parcURI_SetScheme_Resetting) +{ + char *scheme = "scheme"; + PARCURI *uri = parcURI_Create(); + _parcURI_SetScheme(uri, scheme); + _parcURI_SetScheme(uri, scheme); + + assertTrue(strcmp(scheme, parcURI_GetScheme(uri)) == 0, + "Expected %s actual %s", scheme, parcURI_GetScheme(uri)); + parcURI_Release(&uri); +} + +LONGBOW_TEST_CASE(parcURI, parcURI_SetScheme_Reset) +{ + char *scheme = "scheme"; + PARCURI *uri = parcURI_Create(); + _parcURI_SetScheme(uri, scheme); + _parcURI_SetScheme(uri, NULL); + + assertNull(parcURI_GetScheme(uri), + "Expected NULL actual %s", parcURI_GetScheme(uri)); + parcURI_Release(&uri); +} + +LONGBOW_TEST_CASE(parcURI, parcURI_SetFragment) +{ + char *fragment = "fragment"; + PARCURI *uri = parcURI_Create(); + _parcURI_SetFragment(uri, fragment); + + assertTrue(strcmp(fragment, parcURI_GetFragment(uri)) == 0, + "Expected %s actual %s", fragment, parcURI_GetFragment(uri)); + parcURI_Release(&uri); +} + +LONGBOW_TEST_CASE(parcURI, parcURI_SetFragment_Resetting) +{ + char *fragment = "fragment"; + PARCURI *uri = parcURI_Create(); + _parcURI_SetFragment(uri, fragment); + _parcURI_SetFragment(uri, fragment); + + assertTrue(strcmp(fragment, parcURI_GetFragment(uri)) == 0, + "Expected %s actual %s", fragment, parcURI_GetFragment(uri)); + parcURI_Release(&uri); +} + +LONGBOW_TEST_CASE(parcURI, parcURI_SetFragment_Reset) +{ + char *fragment = "query"; + PARCURI *uri = parcURI_Create(); + _parcURI_SetFragment(uri, fragment); + _parcURI_SetFragment(uri, NULL); + + assertNull(parcURI_GetFragment(uri), + "Expected NULL actual %s", parcURI_GetFragment(uri)); + parcURI_Release(&uri); +} + +LONGBOW_TEST_CASE(parcURI, parcURI_SetQuery) +{ + char *query = "query"; + PARCURI *uri = parcURI_Create(); + _parcURI_SetQuery(uri, query); + + assertTrue(strcmp(query, parcURI_GetQuery(uri)) == 0, + "Expected %s actual %s", query, parcURI_GetQuery(uri)); + parcURI_Release(&uri); +} + +LONGBOW_TEST_CASE(parcURI, parcURI_SetQuery_Resetting) +{ + char *query = "query"; + PARCURI *uri = parcURI_Create(); + _parcURI_SetQuery(uri, query); + _parcURI_SetQuery(uri, query); + + assertTrue(strcmp(query, parcURI_GetQuery(uri)) == 0, + "Expected %s actual %s", query, parcURI_GetQuery(uri)); + parcURI_Release(&uri); +} + +LONGBOW_TEST_CASE(parcURI, parcURI_SetQuery_Reset) +{ + char *query = "query"; + PARCURI *uri = parcURI_Create(); + _parcURI_SetQuery(uri, query); + _parcURI_SetQuery(uri, NULL); + + assertNull(parcURI_GetQuery(uri), + "Expected NULL actual %s", parcURI_GetQuery(uri)); + parcURI_Release(&uri); +} + +LONGBOW_TEST_CASE(parcURI, parcURI_SetAuthority) +{ + char *authority = "authority@auth"; + PARCURI *uri = parcURI_Create(); + _parcURI_SetAuthority(uri, authority); + + assertTrue(strcmp(authority, parcURI_GetAuthority(uri)) == 0, + "Expected %s actual %s", authority, parcURI_GetAuthority(uri)); + parcURI_Release(&uri); +} + +LONGBOW_TEST_CASE(parcURI, parcURI_SetAuthority_Resetting) +{ + char *authority = "query"; + PARCURI *uri = parcURI_Create(); + _parcURI_SetAuthority(uri, authority); + _parcURI_SetAuthority(uri, authority); + + assertTrue(strcmp(authority, parcURI_GetAuthority(uri)) == 0, + "Expected %s actual %s", authority, parcURI_GetAuthority(uri)); + parcURI_Release(&uri); +} + +LONGBOW_TEST_CASE(parcURI, parcURI_SetAuthority_Reset) +{ + char *query = "query"; + PARCURI *uri = parcURI_Create(); + _parcURI_SetAuthority(uri, query); + _parcURI_SetAuthority(uri, NULL); + + assertNull(parcURI_GetAuthority(uri), + "Expected NULL actual %s", parcURI_GetAuthority(uri)); + parcURI_Release(&uri); +} + +LONGBOW_TEST_CASE(parcURI, parseAuthority_NoPath) +{ + char *authority = "//" URI_AUTHORITY; + char *expected = URI_AUTHORITY; + + const char *pointer; + char *actual = _parseAuthority(authority, &pointer); + + assertTrue(strcmp(expected, actual) == 0, + "Expected '%s' actual '%s'", authority, actual); + assertTrue(*pointer == 0, + "Expected null actual '%c'", *pointer); + parcMemory_Deallocate((void **) &actual); +} + +LONGBOW_TEST_CASE(parcURI, parseFragment) +{ + testUnimplemented("This test is unimplemented"); +} + +LONGBOW_TEST_CASE(parcURI, parsePath) +{ + testUnimplemented("This test is unimplemented"); +} + +LONGBOW_TEST_CASE(parcURI, parseQuery) +{ + testUnimplemented("This test is unimplemented"); +} + +int +main(int argc, char *argv[]) +{ + LongBowRunner *testRunner = LONGBOW_TEST_RUNNER_CREATE(parcURI); + int status = LONGBOW_TEST_MAIN(argc, argv, testRunner); + longBowTestRunner_Destroy(&testRunner); + exit(status); +} |