diff --git a/18-base64-encoding-decoding/01-base64-encoding/mainMaind247df73bb_test.go b/18-base64-encoding-decoding/01-base64-encoding/mainMaind247df73bb_test.go new file mode 100644 index 0000000..378dbc2 --- /dev/null +++ b/18-base64-encoding-decoding/01-base64-encoding/mainMaind247df73bb_test.go @@ -0,0 +1,83 @@ +package main + +import ( + "encoding/base64" + "fmt" + "testing" +) + +func TestMaind247df73bb(t *testing.T) { + testCases := []struct { + name string + input string + stdEncoded string + rawStdEncoded string + urlEncoded string + rawUrlEncoded string + }{ + { + name: "Basic String", + input: "Gol@ng is Awesome?~", + stdEncoded: "R29sQG5nIGlzIEF3ZXNvbWU/fw==", + rawStdEncoded: "R29sQG5nIGlzIEF3ZXNvbWU/fw", + urlEncoded: "R29sQG5nIGlzIEF3ZXNvbWU_fw==", + rawUrlEncoded: "R29sQG5nIGlzIEF3ZXNvbWU_fw", + }, + { + name: "Empty String", + input: "", + stdEncoded: "", + rawStdEncoded: "", + urlEncoded: "", + rawUrlEncoded: "", + }, + } + + for _, tc := range testCases { + t.Run(tc.name, func(t *testing.T) { + // Standard Base64 Encoding + encodedData := base64.StdEncoding.EncodeToString([]byte(tc.input)) + if encodedData != tc.stdEncoded { + t.Errorf("Expected standard encoding: %s, got: %s", tc.stdEncoded, encodedData) + } + + // Standard Base64 Encoding without padding + encodedDataWithoutPadding := base64.RawStdEncoding.EncodeToString([]byte(tc.input)) + if encodedDataWithoutPadding != tc.rawStdEncoded { + t.Errorf("Expected raw standard encoding: %s, got: %s", tc.rawStdEncoded, encodedDataWithoutPadding) + } + + // URL and filename-safe Base64 encoding + urlSafeEncodedData := base64.URLEncoding.EncodeToString([]byte(tc.input)) + if urlSafeEncodedData != tc.urlEncoded { + t.Errorf("Expected URL safe encoding: %s, got: %s", tc.urlEncoded, urlSafeEncodedData) + } + + // URL and filename-safe Base64 encoding without padding + urlSafeEncodedDataWithoutPadding := base64.RawURLEncoding.EncodeToString([]byte(tc.input)) + if urlSafeEncodedDataWithoutPadding != tc.rawUrlEncoded { + t.Errorf("Expected raw URL safe encoding: %s, got: %s", tc.rawUrlEncoded, urlSafeEncodedDataWithoutPadding) + } + }) + } +} + +func main() { + data := "Gol@ng is Awesome?~" + + // Standard Base64 Encoding + encodedData := base64.StdEncoding.EncodeToString([]byte(data)) + fmt.Println(encodedData) + + // Standard Base64 Encoding without padding + encodedDataWithoutPadding := base64.RawStdEncoding.EncodeToString([]byte(data)) + fmt.Println(encodedDataWithoutPadding) + + // URL and filename-safe Base64 encoding + urlSafeEncodedData := base64.URLEncoding.EncodeToString([]byte(data)) + fmt.Println(urlSafeEncodedData) + + // URL and filename-safe Base64 encoding without padding + urlSafeEncodedDataWithoutPadding := base64.RawURLEncoding.EncodeToString([]byte(data)) + fmt.Println(urlSafeEncodedDataWithoutPadding) +} \ No newline at end of file diff --git a/18-base64-encoding-decoding/02-base64-decoding/mainMainb7d8114fa9_test.go b/18-base64-encoding-decoding/02-base64-decoding/mainMainb7d8114fa9_test.go new file mode 100644 index 0000000..035ac2d --- /dev/null +++ b/18-base64-encoding-decoding/02-base64-decoding/mainMainb7d8114fa9_test.go @@ -0,0 +1,70 @@ +package main + +import ( + "encoding/base64" + "fmt" + "testing" +) + +func decodeBase64(encodedData string) (string, error) { + decodedData, err := base64.StdEncoding.DecodeString(encodedData) + if err != nil { + return "", err + } + return string(decodedData), nil +} + +func TestDecodeBase64(t *testing.T) { + t.Run("Standard Base64 Decoding", func(t *testing.T) { + encodedData := "R29sQG5nIGlzIEF3ZXNvbWU/fg==" + expectedResult := "Gol@ng is Awesome?~" + + result, err := decodeBase64(encodedData) + if err != nil { + t.Errorf("Error decoding Base64 encoded data: %v", err) + } + + if result != expectedResult { + t.Errorf("Expected %s, got %s", expectedResult, result) + } + }) + + t.Run("URL and filename-safe Base64 decoding", func(t *testing.T) { + urlSafeBase64EncodedData := "R29sQG5nIGlzIEF3ZXNvbWU_fg==" + expectedResult := "Gol@ng is Awesome_~" + + result, err := decodeBase64(urlSafeBase64EncodedData) + if err != nil { + t.Errorf("Error decoding Base64 encoded data: %v", err) + } + + if result != expectedResult { + t.Errorf("Expected %s, got %s", expectedResult, result) + } + }) + + t.Run("Invalid Base64 data", func(t *testing.T) { + invalidEncodedData := "R29sQG5nIGlzIEF3ZXNvbWU?fg==" + + _, err := decodeBase64(invalidEncodedData) + if err == nil { + t.Error("Expected an error, got nil") + } + }) +} + +func main() { + encodedData := "R29sQG5nIGlzIEF3ZXNvbWU/fg==" + decodedData, err := decodeBase64(encodedData) + if err != nil { + fmt.Printf("Error decoding Base64 encoded data %v", err) + } + fmt.Println(decodedData) + + urlSafeBase64EncodedData := "R29sQG5nIGlzIEF3ZXNvbWU_fg==" + urlSafeData, err := decodeBase64(urlSafeBase64EncodedData) + if err != nil { + fmt.Printf("Error decoding Base64 encoded data %v", err) + } + fmt.Println(urlSafeData) +} \ No newline at end of file