| 10 | ) |
| 11 | |
| 12 | func TestWriteFile(t *testing.T) { |
| 13 | tests := []struct { |
| 14 | name string |
| 15 | filename string |
| 16 | content string |
| 17 | expectError bool |
| 18 | }{ |
| 19 | { |
| 20 | name: "write simple file", |
| 21 | filename: "test.txt", |
| 22 | content: "hello world", |
| 23 | expectError: false, |
| 24 | }, |
| 25 | { |
| 26 | name: "write empty file", |
| 27 | filename: "empty.txt", |
| 28 | content: "", |
| 29 | expectError: false, |
| 30 | }, |
| 31 | { |
| 32 | name: "write file with special characters", |
| 33 | filename: "special.txt", |
| 34 | content: "hello\nworld\t!@#$%^&*()", |
| 35 | expectError: false, |
| 36 | }, |
| 37 | { |
| 38 | name: "write to invalid directory", |
| 39 | filename: "/nonexistent/directory/file.txt", |
| 40 | content: "test", |
| 41 | expectError: true, |
| 42 | }, |
| 43 | } |
| 44 | |
| 45 | for _, tt := range tests { |
| 46 | t.Run(tt.name, func(t *testing.T) { |
| 47 | var filename string |
| 48 | if !tt.expectError { |
| 49 | tempDir := t.TempDir() |
| 50 | filename = filepath.Join(tempDir, tt.filename) |
| 51 | } else { |
| 52 | filename = tt.filename |
| 53 | } |
| 54 | |
| 55 | err := writeFile(filename, tt.content) |
| 56 | |
| 57 | if tt.expectError { |
| 58 | assert.Error(t, err, "writeFile() should return an error") |
| 59 | return |
| 60 | } |
| 61 | |
| 62 | assert.NoError(t, err, "writeFile() should not return an error") |
| 63 | |
| 64 | content, err := os.ReadFile(filename) |
| 65 | assert.NoError(t, err, "Failed to read written file") |
| 66 | assert.Equal(t, tt.content, string(content), "writeFile() content mismatch") |
| 67 | |
| 68 | info, err := os.Stat(filename) |
| 69 | assert.NoError(t, err, "Failed to stat file") |