diff options
author | 2017-02-23 17:01:02 +0100 | |
---|---|---|
committer | 2017-02-23 17:21:02 +0100 | |
commit | ec688b4723a041044226358bcd4dd6e2da39da49 (patch) | |
tree | 3a244c48d1eb9e4d90f9050fd1a61ae5c0327526 /libparc/parc/algol/test/test_parc_URIAuthority.c | |
parent | 9b30fc10fb1cbebe651e5a107e8ca5b24de54675 (diff) |
Initial commit: cframework. Longbow and Libparc
Change-Id: I90378dbd30da6033b20fb1f829b3b822cf366c59
Signed-off-by: Luca Muscariello <lumuscar+fdio@cisco.com>
Diffstat (limited to 'libparc/parc/algol/test/test_parc_URIAuthority.c')
-rw-r--r-- | libparc/parc/algol/test/test_parc_URIAuthority.c | 267 |
1 files changed, 267 insertions, 0 deletions
diff --git a/libparc/parc/algol/test/test_parc_URIAuthority.c b/libparc/parc/algol/test/test_parc_URIAuthority.c new file mode 100644 index 00000000..e6d8196a --- /dev/null +++ b/libparc/parc/algol/test/test_parc_URIAuthority.c @@ -0,0 +1,267 @@ +/* + * 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_URIAuthority.c" +#include <stdint.h> + +#include <LongBow/unit-test.h> + +#include <parc/algol/parc_URI.h> + +#include "_test_parc_URI.h" + +#include <parc/algol/parc_SafeMemory.h> +#include <parc/testing/parc_ObjectTesting.h> + +LONGBOW_TEST_RUNNER(parcURIAuthority) +{ + LONGBOW_RUN_TEST_FIXTURE(parcURIAuthority); +} + +LONGBOW_TEST_RUNNER_SETUP(parcURIAuthority) +{ + return LONGBOW_STATUS_SUCCEEDED; +} + +LONGBOW_TEST_RUNNER_TEARDOWN(parcURIAuthority) +{ + 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(parcURIAuthority) +{ + LONGBOW_RUN_TEST_CASE(parcURIAuthority, parcURIAuthority_Parse); + + LONGBOW_RUN_TEST_CASE(parcURIAuthority, parcURIAuthority_Acquire); + + LONGBOW_RUN_TEST_CASE(parcURIAuthority, parcURIAuthority_Equals); + + LONGBOW_RUN_TEST_CASE(parcURIAuthority, parcURIAuthority_GetUserInfo); + LONGBOW_RUN_TEST_CASE(parcURIAuthority, parcURIAuthority_GetHostName); + LONGBOW_RUN_TEST_CASE(parcURIAuthority, parcURIAuthority_GetPort); +} + +LONGBOW_TEST_FIXTURE_SETUP(parcURIAuthority) +{ + return LONGBOW_STATUS_SUCCEEDED; +} + +LONGBOW_TEST_FIXTURE_TEARDOWN(parcURIAuthority) +{ + return LONGBOW_STATUS_SUCCEEDED; +} + +LONGBOW_TEST_CASE(parcURIAuthority, parcURIAuthority_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); + + PARCURIAuthority *authority = parcURIAuthority_Parse(parcURI_GetAuthority(uri)); + + assertEqualStrings(parcURIAuthority_GetUserInfo(authority), URI_AUTHORITY_USERINFO); + + parcURIAuthority_Release(&authority); + + parcMemory_Deallocate((void **) &uriString); + parcURI_Release(&uri); + + // URI without the port + uriString = URI_SCHEME "://" URI_AUTHORITY_USERINFO "@" URI_AUTHORITY_HOSTNAME "/" URI_PATH_SEGMENT "/" URI_PATH_SEGMENT "?" URI_QUERY "#" URI_FRAGMENT; + uriString = parcMemory_StringDuplicate(uriString, strlen(uriString)); + uri = parcURI_Parse(uriString); + authority = parcURIAuthority_Parse(parcURI_GetAuthority(uri)); + + assertEqualStrings(parcURIAuthority_GetUserInfo(authority), URI_AUTHORITY_USERINFO); + + parcURIAuthority_Release(&authority); + parcURI_Release(&uri); + + // URI with literal V4 address + uriString = URI_SCHEME "://" URI_AUTHORITY_LITERAL_HOST "/" URI_PATH_SEGMENT "/" URI_PATH_SEGMENT "?" URI_QUERY "#" URI_FRAGMENT; + uriString = parcMemory_StringDuplicate(uriString, strlen(uriString)); + uri = parcURI_Parse(uriString); + authority = parcURIAuthority_Parse(parcURI_GetAuthority(uri)); + + assertEqualStrings(parcURIAuthority_GetHostName(authority), URI_AUTHORITY_LITERAL_HOSTNAME); + + parcURIAuthority_Release(&authority); + parcURI_Release(&uri); + + // URI with literal V6 address + uriString = URI_SCHEME "://" URI_AUTHORITY_LITERAL_HOST6 "/" URI_PATH_SEGMENT "/" URI_PATH_SEGMENT "?" URI_QUERY "#" URI_FRAGMENT; + uriString = parcMemory_StringDuplicate(uriString, strlen(uriString)); + uri = parcURI_Parse(uriString); + authority = parcURIAuthority_Parse(parcURI_GetAuthority(uri)); + + assertEqualStrings(parcURIAuthority_GetHostName(authority), URI_AUTHORITY_LITERAL_HOSTNAME6); + + parcURIAuthority_Release(&authority); + parcURI_Release(&uri); + + // URI with full literal V6 address + uriString = URI_SCHEME "://" URI_AUTHORITY_LITERAL_HOST6_2 "/" URI_PATH_SEGMENT "/" URI_PATH_SEGMENT "?" URI_QUERY "#" URI_FRAGMENT; + uriString = parcMemory_StringDuplicate(uriString, strlen(uriString)); + uri = parcURI_Parse(uriString); + authority = parcURIAuthority_Parse(parcURI_GetAuthority(uri)); + + assertEqualStrings(parcURIAuthority_GetHostName(authority), URI_AUTHORITY_LITERAL_HOSTNAME6_2); + + parcURIAuthority_Release(&authority); + parcURI_Release(&uri); + + parcMemory_Deallocate((void **) &uriString); +} + +LONGBOW_TEST_CASE(parcURIAuthority, parcURIAuthority_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); + + PARCURIAuthority *authority = parcURIAuthority_Parse(parcURI_GetAuthority(uri)); + PARCURIAuthority *handle = parcURIAuthority_Acquire(authority); + + assertTrue(parcURIAuthority_Equals(authority, handle), "URI Authorities should be equal since they refer to the same object."); + + parcURIAuthority_Release(&authority); + parcURIAuthority_Release(&handle); + + parcMemory_Deallocate((void **) &uriString); + parcURI_Release(&uri); +} + +LONGBOW_TEST_CASE(parcURIAuthority, parcURIAuthority_Equals) +{ + char *uriString1 = URI_SCHEME "://" URI_AUTHORITY; + uriString1 = parcMemory_StringDuplicate(uriString1, strlen(uriString1)); + PARCURI *uri1 = parcURI_Parse(uriString1); + PARCURIAuthority *x = parcURIAuthority_Parse(parcURI_GetAuthority(uri1)); + + char *uriString2 = URI_SCHEME "://" URI_AUTHORITY; + uriString2 = parcMemory_StringDuplicate(uriString2, strlen(uriString2)); + PARCURI *uri2 = parcURI_Parse(uriString2); + PARCURIAuthority *y = parcURIAuthority_Parse(parcURI_GetAuthority(uri2)); + + char *uriString3 = URI_SCHEME "://" URI_AUTHORITY; + uriString3 = parcMemory_StringDuplicate(uriString3, strlen(uriString3)); + PARCURI *uri3 = parcURI_Parse(uriString3); + PARCURIAuthority *z = parcURIAuthority_Parse(parcURI_GetAuthority(uri3)); + + char *differentUriString = URI_SCHEME "://" URI_AUTHORITY_USERINFO; + differentUriString = parcMemory_StringDuplicate(differentUriString, strlen(differentUriString)); + PARCURI *unequalUri = parcURI_Parse(differentUriString); + PARCURIAuthority *u = parcURIAuthority_Parse(parcURI_GetAuthority(unequalUri)); + + char *uriString5 = URI_SCHEME "://" URI_AUTHORITY_DIFFERENT_PORT; + uriString5 = parcMemory_StringDuplicate(uriString5, strlen(uriString5)); + PARCURI *unequalUri5 = parcURI_Parse(uriString5); + PARCURIAuthority *u5 = parcURIAuthority_Parse(parcURI_GetAuthority(unequalUri5)); + + char *uriString4 = URI_SCHEME "://" URI_AUTHORITY_DIFFERENT_USER; + uriString4 = parcMemory_StringDuplicate(uriString4, strlen(uriString4)); + PARCURI *unequalUri4 = parcURI_Parse(uriString4); + PARCURIAuthority *u4 = parcURIAuthority_Parse(parcURI_GetAuthority(unequalUri4)); + + parcObjectTesting_AssertEqualsFunction(parcURIAuthority_Equals, x, y, z, u); + + assertFalse(parcURIAuthority_Equals(x, u4), "Expected URI authorities with different user info to be unequal"); + assertFalse(parcURIAuthority_Equals(x, u5), "Expected URI authorities with different hsot names to be unequal"); + + parcURIAuthority_Release(&x); + parcURIAuthority_Release(&y); + parcURIAuthority_Release(&z); + parcURIAuthority_Release(&u); + parcURIAuthority_Release(&u4); + parcURIAuthority_Release(&u5); + + parcMemory_Deallocate((void **) &uriString1); + parcMemory_Deallocate((void **) &uriString2); + parcMemory_Deallocate((void **) &uriString3); + parcMemory_Deallocate((void **) &uriString4); + parcMemory_Deallocate((void **) &uriString5); + parcMemory_Deallocate((void **) &differentUriString); + + parcURI_Release(&uri1); + parcURI_Release(&uri2); + parcURI_Release(&uri3); + parcURI_Release(&unequalUri); + parcURI_Release(&unequalUri4); + parcURI_Release(&unequalUri5); +} + +LONGBOW_TEST_CASE(parcURIAuthority, parcURIAuthority_GetUserInfo) +{ + 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); + PARCURIAuthority *authority = parcURIAuthority_Parse(parcURI_GetAuthority(uri)); + + assertTrue(strcmp(URI_AUTHORITY_USERINFO, parcURIAuthority_GetUserInfo(authority)) == 0, "URI Authority user info should be equal: %s - %s", URI_AUTHORITY_USERINFO, parcURIAuthority_GetUserInfo(authority)); + + parcURIAuthority_Release(&authority); + + parcMemory_Deallocate((void **) &uriString); + parcURI_Release(&uri); +} + +LONGBOW_TEST_CASE(parcURIAuthority, parcURIAuthority_GetHostName) +{ + 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); + PARCURIAuthority *authority = parcURIAuthority_Parse(parcURI_GetAuthority(uri)); + + assertTrue(strcmp(URI_AUTHORITY_HOSTNAME, parcURIAuthority_GetHostName(authority)) == 0, "URI Authority host name should be equal: %s - %s", URI_AUTHORITY_HOSTNAME, parcURIAuthority_GetHostName(authority)); + + parcURIAuthority_Release(&authority); + + parcMemory_Deallocate((void **) &uriString); + parcURI_Release(&uri); +} + +LONGBOW_TEST_CASE(parcURIAuthority, parcURIAuthority_GetPort) +{ + 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); + PARCURIAuthority *authority = parcURIAuthority_Parse(parcURI_GetAuthority(uri)); + + assertTrue(atol(URI_AUTHORITY_PORT_1) == parcURIAuthority_GetPort(authority), + "URI Authority host name should be equal: %ld - %ld", atol(URI_AUTHORITY_PORT_1), parcURIAuthority_GetPort(authority)); + + parcURIAuthority_Release(&authority); + + parcMemory_Deallocate((void **) &uriString); + parcURI_Release(&uri); +} + +int +main(int argc, char *argv[]) +{ + LongBowRunner *testRunner = LONGBOW_TEST_RUNNER_CREATE(parcURIAuthority); + int status = LONGBOW_TEST_MAIN(argc, argv, testRunner); + longBowTestRunner_Destroy(&testRunner); + exit(status); +} |