print("=== STRING INDEXING TEST SUITE ==="); print("Testing string indexing functionality..."); // ======================================== // TEST 1: BASIC STRING INDEXING // ======================================== print("\nšŸ“ TEST 1: Basic String Indexing"); var str = "Hello, Bob!"; print(" String: " + str); // Test basic indexing var first = str[0]; var second = str[1]; var last = str[10]; print(" First character: " + first); print(" Second character: " + second); print(" Last character: " + last); assert(first == "H", "First character should be 'H'"); assert(second == "e", "Second character should be 'e'"); assert(last == "!", "Last character should be '!'"); print("āœ… Basic string indexing: PASS"); // ======================================== // TEST 2: STRING LENGTH AND BOUNDS // ======================================== print("\nšŸ“ TEST 2: String Length and Bounds"); var testStr = "Bob"; var length = len(testStr); print(" String: " + testStr); print(" Length: " + toString(length)); // Test all valid indices var char0 = testStr[0]; var char1 = testStr[1]; var char2 = testStr[2]; print(" Characters: " + char0 + ", " + char1 + ", " + char2); assert(length == 3, "String length should be 3"); assert(char0 == "B", "Character 0 should be 'B'"); assert(char1 == "o", "Character 1 should be 'o'"); assert(char2 == "b", "Character 2 should be 'b'"); print("āœ… String length and bounds: PASS"); // ======================================== // TEST 3: EMPTY STRING HANDLING // ======================================== print("\n🈳 TEST 3: Empty String Handling"); var empty = ""; var emptyLength = len(empty); print(" Empty string length: " + toString(emptyLength)); assert(emptyLength == 0, "Empty string length should be 0"); print("āœ… Empty string handling: PASS"); // ======================================== // TEST 4: SINGLE CHARACTER STRINGS // ======================================== print("\nšŸ”¤ TEST 4: Single Character Strings"); var single = "X"; var singleLength = len(single); var singleChar = single[0]; print(" Single character: " + singleChar); print(" Length: " + toString(singleLength)); assert(singleLength == 1, "Single character string length should be 1"); assert(singleChar == "X", "Single character should be 'X'"); print("āœ… Single character strings: PASS"); // ======================================== // TEST 5: SPECIAL CHARACTERS // ======================================== print("\nšŸŽÆ TEST 5: Special Characters"); var special = "Hello\nWorld\tTest"; var newline = special[5]; var tab = special[11]; print(" String with special chars: " + special); print(" Newline character: " + newline); print(" Tab character: " + tab); assert(newline == "\n", "Newline character should be preserved"); assert(tab == "\t", "Tab character should be preserved"); print("āœ… Special characters: PASS"); // ======================================== // TEST 6: NUMBERS AND SYMBOLS // ======================================== print("\nšŸ”¢ TEST 6: Numbers and Symbols"); var mixed = "Hello123!@#"; var digit = mixed[5]; var symbol = mixed[8]; print(" Mixed string: " + mixed); print(" Digit: " + digit); print(" Symbol: " + symbol); assert(digit == "1", "Digit should be '1'"); assert(symbol == "!", "Symbol should be '!'"); print("āœ… Numbers and symbols: PASS"); // ======================================== // TEST 7: VARIABLE STRING INDEXING // ======================================== print("\nšŸ”„ TEST 7: Variable String Indexing"); var message = "Programming"; var indices = [0, 1, 2, 3, 4]; for (var i = 0; i < len(indices); i = i + 1) { var idx = indices[i]; var char = message[idx]; print(" Index " + toString(idx) + ": " + char); } var expected = ["P", "r", "o", "g", "r"]; for (var i = 0; i < len(indices); i = i + 1) { var idx = indices[i]; var char = message[idx]; assert(char == expected[i], "Character at index " + toString(idx) + " should be " + expected[i]); } print("āœ… Variable string indexing: PASS"); // ======================================== // TEST 8: STRING CONCATENATION WITH INDEXING // ======================================== print("\nšŸ”— TEST 8: String Concatenation with Indexing"); var str1 = "Hello"; var str2 = "World"; var combined = str1 + " " + str2; var firstWord = ""; for (var i = 0; i < len(str1); i = i + 1) { firstWord = firstWord + str1[i]; } var secondWord = ""; for (var i = 0; i < len(str2); i = i + 1) { secondWord = secondWord + str2[i]; } print(" Combined: " + combined); print(" First word: " + firstWord); print(" Second word: " + secondWord); assert(firstWord == "Hello", "First word should be 'Hello'"); assert(secondWord == "World", "Second word should be 'World'"); print("āœ… String concatenation with indexing: PASS"); // ======================================== // TEST 9: STRING REVERSAL // ======================================== print("\nšŸ”„ TEST 9: String Reversal"); var original = "Bob"; var reversed = ""; for (var i = len(original) - 1; i >= 0; i = i - 1) { reversed = reversed + original[i]; } print(" Original: " + original); print(" Reversed: " + reversed); assert(reversed == "boB", "Reversed string should be 'boB'"); print("āœ… String reversal: PASS"); // ======================================== // TEST 10: CHARACTER COUNTING // ======================================== print("\nšŸ“Š TEST 10: Character Counting"); var text = "hello world"; var letterCount = 0; for (var i = 0; i < len(text); i = i + 1) { var char = text[i]; if (char == "l") { letterCount = letterCount + 1; } } print(" Text: " + text); print(" Number of 'l' characters: " + toString(letterCount)); assert(letterCount == 3, "Should find 3 'l' characters"); print("āœ… Character counting: PASS"); // ======================================== // TEST 11: STRING COMPARISON WITH INDEXING // ======================================== print("\nšŸ” TEST 11: String Comparison with Indexing"); var strA = "apple"; var strB = "apple"; var areEqual = true; if (len(strA) != len(strB)) { areEqual = false; } else { for (var i = 0; i < len(strA); i = i + 1) { if (strA[i] != strB[i]) { areEqual = false; break; } } } print(" String A: " + strA); print(" String B: " + strB); print(" Are equal: " + toString(areEqual)); assert(areEqual == true, "Strings should be equal"); print("āœ… String comparison with indexing: PASS"); // ======================================== // TEST 12: STRING SEARCH // ======================================== print("\nšŸ”Ž TEST 12: String Search"); var haystack = "Hello, Bob!"; var needle = "Bob"; var found = false; var foundIndex = -1; for (var i = 0; i <= len(haystack) - len(needle); i = i + 1) { var match = true; for (var j = 0; j < len(needle); j = j + 1) { if (haystack[i + j] != needle[j]) { match = false; break; } } if (match) { found = true; foundIndex = i; break; } } print(" Haystack: " + haystack); print(" Needle: " + needle); print(" Found: " + toString(found)); print(" Index: " + toString(foundIndex)); assert(found == true, "Should find 'Bob' in the string"); assert(foundIndex == 7, "Should find 'Bob' at index 7"); print("āœ… String search: PASS"); // ======================================== // TEST 13: STRING SLICING SIMULATION // ======================================== print("\nāœ‚ļø TEST 13: String Slicing Simulation"); var fullString = "Hello, World!"; var start = 0; var end = 5; var slice = ""; for (var i = start; i < end; i = i + 1) { slice = slice + fullString[i]; } print(" Full string: " + fullString); print(" Slice [0:5]: " + slice); assert(slice == "Hello", "Slice should be 'Hello'"); print("āœ… String slicing simulation: PASS"); // ======================================== // TEST 14: STRING VALIDATION // ======================================== print("\nāœ… TEST 14: String Validation"); var email = "user@example.com"; var hasAt = false; var hasDot = false; for (var i = 0; i < len(email); i = i + 1) { var char = email[i]; if (char == "@") { hasAt = true; } if (char == ".") { hasDot = true; } } print(" Email: " + email); print(" Has @: " + toString(hasAt)); print(" Has .: " + toString(hasDot)); assert(hasAt == true, "Email should contain @"); assert(hasDot == true, "Email should contain ."); print("āœ… String validation: PASS"); // ======================================== // TEST 15: STRING TRANSFORMATION // ======================================== print("\nšŸ”„ TEST 15: String Transformation"); var original = "hello world"; var transformed = ""; for (var i = 0; i < len(original); i = i + 1) { var char = original[i]; if (char == " ") { transformed = transformed + "_"; } else { transformed = transformed + char; } } print(" Original: " + original); print(" Transformed: " + transformed); assert(transformed == "hello_world", "Transformed string should be 'hello_world'"); print("āœ… String transformation: PASS"); // ======================================== // SUMMARY // ======================================== print("\nšŸŽ‰ STRING INDEXING TEST RESULTS ==="); print("āœ… Basic string indexing"); print("āœ… String length and bounds"); print("āœ… Empty string handling"); print("āœ… Single character strings"); print("āœ… Special characters"); print("āœ… Numbers and symbols"); print("āœ… Variable string indexing"); print("āœ… String concatenation with indexing"); print("āœ… String reversal"); print("āœ… Character counting"); print("āœ… String comparison with indexing"); print("āœ… String search"); print("āœ… String slicing simulation"); print("āœ… String validation"); print("āœ… String transformation"); print("\nšŸ† STRING INDEXING IS ROCK SOLID! šŸ†"); print("All string indexing operations work perfectly!"); print("Bob can now process text with precision!"); print("Ready for advanced text processing tasks!"); print("\nšŸŽŠ STRING INDEXING TESTS COMPLETE! šŸŽŠ"); print("String indexing is bulletproof and production-ready!");