Keep the URL invalid when resolving with a non-empty invalid base.
Assemble the URL into a LChar Vector.
Set the path segment to have length of 1 when appending the '/' through path canonicalization.
Adopt the assembled URL's vector.
Only set the appropriate lengths for the parsed username and password segments if the segments were present.
Take valid (and not just non-empty) parsed username and password segments into account when assembling.
Take the LChar code path when resolving URLs only if the relative is 8-bit and the base string is either empty or 8-bit as well.
FKURL::Segment::start should return an unsigned value.
Add FKURL::Segment::end, returing the end point of the segment.
Implement relative URLs resolving.
Make the baseEnd variable in FKURL::baseAsString of the unsigned type.
Improve FKURL::lastPathComponent so it correctly returns the ... last path component even if no basename is present.
Implement hostStart, hostEnd, pathStart, pathEnd and pathAfterLastSlash under FKURL.
Reorder and add more method output tests.
Add ExpectedURLComponents class, make COMPARE_* defines use ASSERT_EQ, add COMPARE_COMPONENT_AGAINST_EXPECTATION and RUN_TEST_CASES defines.
Add PARSED_KURL_AND_FKURL_PAIR and RELATIVE_KURL_AND_FKURL_PAIR defines that create KURL and FKURL objects.
Add parsedURLTestCases, a tuple-returning static method containing all the parsed URL test cases on which various tests should be run.
Add relativeURLTestCases, a tuple-returning static method containing all the relative URL test cases on which various tests should be run.
Move empty KURL-FKURL behavior comparison into its own test.
Add testFKURLMatchesKURL, testFKURLComponentsAgainsExpectations helper methods that do all the test assertions.