package byteRange import "testing" import "seekia/internal/messaging/inbox" import "slices" func TestCompareIdentityBounds(t *testing.T){ testBound1, testBound2 := GetMinimumMaximumIdentityHashBounds() areEqual, latterIsLarger, err := compareByteSlices(testBound1[:], testBound2[:]) if (err != nil){ t.Fatalf("compareByteSlices failed test 1 with error: " + err.Error()) } if (areEqual == true){ t.Fatalf("compareByteSlices failed test 1a.") } if (latterIsLarger == false){ t.Fatalf("compareByteSlices failed test 1b.") } areEqual, latterIsLarger, err = compareByteSlices(testBound2[:], testBound1[:]) if (err != nil){ t.Fatalf("compareByteSlices failed test 2 with error: " + err.Error()) } if (areEqual == true){ t.Fatalf("compareByteSlices failed test 2a.") } if (latterIsLarger == true){ t.Fatalf("compareByteSlices failed test 2b.") } } func TestCompareInboxBounds(t *testing.T){ testBound1 := "5555555555555555" testBound2 := "7777777777777777" testBound1Bytes, err := inbox.ReadInboxString(testBound1) if (err != nil) { t.Fatalf("testBound1 is invalid: " + err.Error()) } testBound2Bytes, err := inbox.ReadInboxString(testBound2) if (err != nil) { t.Fatalf("testBound2 is invalid: " + err.Error()) } areEqual, latterIsLarger, err := compareByteSlices(testBound1Bytes[:], testBound2Bytes[:]) if (err != nil){ t.Fatalf("compareByteSlices failed test 3 with error: " + err.Error()) } if (areEqual == true){ t.Fatalf("compareByteSlices failed test 3a.") } if (latterIsLarger == false){ t.Fatalf("compareByteSlices failed test 3b.") } areEqual, latterIsLarger, err = compareByteSlices(testBound2Bytes[:], testBound1Bytes[:]) if (err != nil){ t.Fatalf("compareByteSlices failed test 4 with error: " + err.Error()) } if (areEqual == true){ t.Fatalf("compareByteSlices failed test 4a.") } if (latterIsLarger == true){ t.Fatalf("compareByteSlices failed test 4b.") } testBound3 := "beraceaware22222" testBound4 := "beraceaware33333" testBound3Bytes, err := inbox.ReadInboxString(testBound3) if (err != nil) { t.Fatalf("testBound3 is invalid: " + err.Error()) } testBound4Bytes, err := inbox.ReadInboxString(testBound4) if (err != nil) { t.Fatalf("testBound4 is invalid: " + err.Error()) } areEqual, latterIsLarger, err = compareByteSlices(testBound3Bytes[:], testBound4Bytes[:]) if (err != nil){ t.Fatalf("compareByteSlices failed test 5 with error: " + err.Error()) } if (areEqual == true){ t.Fatalf("compareByteSlices failed test 5a.") } if (latterIsLarger == false){ t.Fatalf("compareByteSlices failed test 5b.") } areEqual, latterIsLarger, err = compareByteSlices(testBound4Bytes[:], testBound3Bytes[:]) if (err != nil){ t.Fatalf("compareByteSlices failed test 6 with error: " + err.Error()) } if (areEqual == true){ t.Fatalf("compareByteSlices failed test 6a.") } if (latterIsLarger == true){ t.Fatalf("compareByteSlices failed test 6b.") } } func TestInboxIsWithinRangeFunction(t *testing.T){ testRangeStartString := "aaaaaaaaaaaaaaaa" testRangeEndString := "5555555555555555" testRangeStart, err := inbox.ReadInboxString(testRangeStartString) if (err != nil) { t.Fatalf("testRangeStart is invalid: " + err.Error()) } testRangeEnd, err := inbox.ReadInboxString(testRangeEndString) if (err != nil) { t.Fatalf("testRangeEnd is invalid: " + err.Error()) } inboxAString := "ffffffffffffffff" inboxBString := "6666666666666666" inboxA, err := inbox.ReadInboxString(inboxAString) if (err != nil) { t.Fatalf("inboxAString is invalid: " + err.Error()) } inboxB, err := inbox.ReadInboxString(inboxBString) if (err != nil) { t.Fatalf("inboxBString is invalid: " + err.Error()) } isWithinRange, err := CheckIfInboxIsWithinRange(testRangeStart, testRangeEnd, inboxA) if (err != nil){ t.Fatalf("CheckIfInboxIsWithinRange failed test 1 with error: " + err.Error()) } if (isWithinRange == false){ t.Fatalf("CheckIfInboxIsWithinRange failed test 1.") } isWithinRange, err = CheckIfInboxIsWithinRange(testRangeStart, testRangeEnd, inboxB) if (err != nil){ t.Fatalf("CheckIfInboxIsWithinRange failed test 2 with error: " + err.Error()) } if (isWithinRange == true){ t.Fatalf("CheckIfInboxIsWithinRange failed test 2.") } } func TestGetInboxesWithinRangeFunction(t *testing.T){ testRangeStartString := "aaaaaaaaaaaaaaaa" testRangeEndString := "5555555555555555" testRangeStart, err := inbox.ReadInboxString(testRangeStartString) if (err != nil) { t.Fatalf("testRangeStart is invalid: " + err.Error()) } testRangeEnd, err := inbox.ReadInboxString(testRangeEndString) if (err != nil) { t.Fatalf("testRangeEnd is invalid: " + err.Error()) } inRangeInbox1String := "aaaaaaaaaaaaaaaa" inRangeInbox2String := "bbbbbbbbbbbbbbbb" inRangeInbox3String := "cccccccccccccccc" inRangeInbox4String := "beraceaware23456" inRangeInbox1, err := inbox.ReadInboxString(inRangeInbox1String) if (err != nil) { t.Fatalf("inRangeInbox1String is invalid: " + err.Error()) } inRangeInbox2, err := inbox.ReadInboxString(inRangeInbox2String) if (err != nil) { t.Fatalf("inRangeInbox2String is invalid: " + err.Error()) } inRangeInbox3, err := inbox.ReadInboxString(inRangeInbox3String) if (err != nil) { t.Fatalf("inRangeInbox3String is invalid: " + err.Error()) } inRangeInbox4, err := inbox.ReadInboxString(inRangeInbox4String) if (err != nil) { t.Fatalf("inRangeInbox4String is invalid: " + err.Error()) } outOfRangeInbox1String := "65432beraceaware" outOfRangeInbox2String := "7777777777777777" outOfRangeInbox1, err := inbox.ReadInboxString(outOfRangeInbox1String) if (err != nil) { t.Fatalf("outOfRangeInbox1String is invalid: " + err.Error()) } outOfRangeInbox2, err := inbox.ReadInboxString(outOfRangeInbox2String) if (err != nil) { t.Fatalf("outOfRangeInbox2String is invalid: " + err.Error()) } inputList := [][10]byte{inRangeInbox1, outOfRangeInbox1, inRangeInbox2, outOfRangeInbox2, inRangeInbox3, inRangeInbox4} expectedOutputList := [][10]byte{inRangeInbox1, inRangeInbox2, inRangeInbox3, inRangeInbox4} anyInboxesFound, inRangeInboxesList, err := GetAllInboxesInListWithinRange(testRangeStart, testRangeEnd, inputList) if (err != nil){ t.Fatalf("GetAllInboxesInListWithinRange failed with error: " + err.Error()) } if (anyInboxesFound == false){ t.Fatalf("GetAllInboxesInListWithinRange failed to return any inboxes.") } if (len(inRangeInboxesList) != 4){ t.Fatalf("GetAllInboxesInListWithinRange returning invalid length result.") } areEqual := slices.Equal(inRangeInboxesList, expectedOutputList) if (areEqual == false){ t.Fatalf("GetAllInboxesInListWithinRange returning invalid in range values list.") } } func TestGetInboxIntersectionRangeFunction(t *testing.T){ testBound1String := "aaaaaaaaaaaaaaaa" testBound2String := "bbbbbbbbbbbbbbbb" testBound3String := "cccccccccccccccc" testBound4String := "dddddddddddddddd" testBound1, err := inbox.ReadInboxString(testBound1String) if (err != nil) { t.Fatalf("testBound1String is invalid: " + err.Error()) } testBound2, err := inbox.ReadInboxString(testBound2String) if (err != nil) { t.Fatalf("testBound2String is invalid: " + err.Error()) } testBound3, err := inbox.ReadInboxString(testBound3String) if (err != nil) { t.Fatalf("testBound3String is invalid: " + err.Error()) } testBound4, err := inbox.ReadInboxString(testBound4String) if (err != nil) { t.Fatalf("testBound4String is invalid: " + err.Error()) } anyIntersectionFound, _, _, err := GetInboxIntersectionRangeFromTwoRanges(testBound1, testBound2, testBound3, testBound4) if (err != nil){ t.Fatalf("GetInboxIntersectionRangeFromTwoRanges failed test 1 with error: " + err.Error()) } if (anyIntersectionFound == true){ t.Fatalf("GetInboxIntersectionRangeFromTwoRanges failed test 1") } anyIntersectionFound, intersectionRangeStart, intersectionRangeEnd, err := GetInboxIntersectionRangeFromTwoRanges(testBound1, testBound3, testBound2, testBound4) if (err != nil){ t.Fatalf("GetInboxIntersectionRangeFromTwoRanges failed test 2 with error: " + err.Error()) } if (anyIntersectionFound == false){ t.Fatalf("GetInboxIntersectionRangeFromTwoRanges failed test 2: No intersection found.") } if (intersectionRangeStart != testBound2 || intersectionRangeEnd != testBound3){ t.Fatalf("GetInboxIntersectionRangeFromTwoRanges failed test 2.") } anyIntersectionFound, intersectionRangeStart, intersectionRangeEnd, err = GetInboxIntersectionRangeFromTwoRanges(testBound1, testBound4, testBound2, testBound3) if (err != nil){ t.Fatalf("GetInboxIntersectionRangeFromTwoRanges failed test 3 with error: " + err.Error()) } if (anyIntersectionFound == false){ t.Fatalf("GetInboxIntersectionRangeFromTwoRanges failed test 3: No intersection found.") } if (intersectionRangeStart != testBound2 || intersectionRangeEnd != testBound3){ t.Fatalf("GetInboxIntersectionRangeFromTwoRanges failed test 3.") } } func TestGetInboxEstimatedItemsInSubrange(t *testing.T){ testBound1String := "aaaaaaaaaaaaaaaa" // == 0 testBound2String := "bbbbbbbbbbbbbbbb" // == 1 testBound3String := "cccccccccccccccc" // == 2 testBound4String := "dddddddddddddddd" // == 3 testBound5String := "eeeeeeeeeeeeeeee" // == 4 testBound6String := "ffffffffffffffff" // == 5 testBound7String := "gggggggggggggggg" // == 6 testBound1, err := inbox.ReadInboxString(testBound1String) if (err != nil) { t.Fatalf("testBound1String is invalid: " + err.Error()) } testBound2, err := inbox.ReadInboxString(testBound2String) if (err != nil) { t.Fatalf("testBound2String is invalid: " + err.Error()) } testBound3, err := inbox.ReadInboxString(testBound3String) if (err != nil) { t.Fatalf("testBound3String is invalid: " + err.Error()) } testBound4, err := inbox.ReadInboxString(testBound4String) if (err != nil) { t.Fatalf("testBound4String is invalid: " + err.Error()) } testBound5, err := inbox.ReadInboxString(testBound5String) if (err != nil) { t.Fatalf("testBound5String is invalid: " + err.Error()) } testBound6, err := inbox.ReadInboxString(testBound6String) if (err != nil) { t.Fatalf("testBound6String is invalid: " + err.Error()) } testBound7, err := inbox.ReadInboxString(testBound7String) if (err != nil) { t.Fatalf("testBound7String is invalid: " + err.Error()) } estimatedItems, err := GetEstimatedInboxSubrangeQuantity(testBound1, testBound7, 100, testBound2, testBound5) if (err != nil){ t.Fatalf("GetEstimatedInboxSubrangeQuantity failed test 1 with error: " + err.Error()) } if (estimatedItems != 50){ t.Fatalf("GetEstimatedInboxSubrangeQuantity failed test 1.") } estimatedItems, err = GetEstimatedInboxSubrangeQuantity(testBound1, testBound6, 100, testBound1, testBound2) if (err != nil){ t.Fatalf("GetEstimatedInboxSubrangeQuantity failed test 2 with error: " + err.Error()) } if (estimatedItems != 20){ t.Fatalf("GetEstimatedInboxSubrangeQuantity failed test 2.") } estimatedItems, err = GetEstimatedInboxSubrangeQuantity(testBound1, testBound6, 100, testBound3, testBound4) if (err != nil){ t.Fatalf("GetEstimatedInboxSubrangeQuantity failed test 3 with error: " + err.Error()) } if (estimatedItems != 20){ t.Fatalf("GetEstimatedInboxSubrangeQuantity failed test 3.") } } func TestSplitIntoSubrangesFunction(t *testing.T){ testBound1String := "aaaaaaaaaaaaaaaa" testBound2String := "cccccccccccccccc" testBound1, err := inbox.ReadInboxString(testBound1String) if (err != nil) { t.Fatalf("testBound1String is invalid: " + err.Error()) } testBound2, err := inbox.ReadInboxString(testBound2String) if (err != nil) { t.Fatalf("testBound2String is invalid: " + err.Error()) } subrangesList, err := SplitInboxRangeIntoEqualSubranges(testBound1, testBound2, 100, 50) if (err != nil){ t.Fatalf("SplitInboxRangeIntoEqualSubranges failed with error: " + err.Error()) } if (len(subrangesList) != 2){ t.Fatalf("SplitInboxRangeIntoEqualSubranges failed: Subranges list not 2 items in length.") } subrange1StartString := "aaaaaaaaaaaaaaaa" subrange1EndString := "bbbbbbbbbbbbbbbb" subrange2StartString := "bbbbbbbbbbbbbbbc" subrange2EndString := "cccccccccccccccc" subrange1Start, err := inbox.ReadInboxString(subrange1StartString) if (err != nil) { t.Fatalf("subrange1StartString is invalid: " + err.Error()) } subrange1End, err := inbox.ReadInboxString(subrange1EndString) if (err != nil) { t.Fatalf("subrange1EndString is invalid: " + err.Error()) } subrange2Start, err := inbox.ReadInboxString(subrange2StartString) if (err != nil) { t.Fatalf("subrange2StartString is invalid: " + err.Error()) } subrange2End, err := inbox.ReadInboxString(subrange2EndString) if (err != nil) { t.Fatalf("subrange2EndString is invalid: " + err.Error()) } subrange1 := InboxSubrange{ SubrangeStart: subrange1Start, SubrangeEnd: subrange1End, } subrange2 := InboxSubrange{ SubrangeStart: subrange2Start, SubrangeEnd: subrange2End, } expectedSubrangesList := []InboxSubrange{subrange1, subrange2} areEqual := slices.Equal(subrangesList, expectedSubrangesList) if (areEqual == false){ t.Fatalf("SplitInboxRangeIntoEqualSubranges failed: Expected map list does not match.") } }