summaryrefslogtreecommitdiff
path: root/internal/file/file_test.go
blob: 684a7d8f1f86c8a2de9c3fbaa513d31dcf6dc7d7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
package file

import (
	"ior/internal/types"
	"strings"
	"syscall"
	"testing"
)

func TestStringValue(t *testing.T) {
        var array [128]byte
        copy(array[:], "test string")

        if str := types.StringValue(array[:]); str != "test string" {
                t.Errorf("epxected 'test string' but got '%s' with bytes '%v'", str, []byte(str))
        }
}

func TestNewFdUnknownFlags(t *testing.T) {
        fdFile := NewFd(1, "test.txt", -1)
        if fdFile.Flags() != unknownFlag {
                t.Errorf("expected unknown flags, got %v", fdFile.Flags())
        }
}

func TestNewFdEmptyName(t *testing.T) {
        fdFile := NewFd(1, "", 0)
        str := fdFile.String()
        if !strings.Contains(str, "E:name") {
                t.Errorf("expected String() to contain 'E:name' for empty name, got '%s'", str)
        }
}

func TestFlagsIsUnknown(t *testing.T) {
        f := unknownFlag
        if f.Is(syscall.O_RDONLY) {
                t.Errorf("expected Is(O_RDONLY) to be false for unknownFlag")
        }
        if f.Is(syscall.O_WRONLY) {
                t.Errorf("expected Is(O_WRONLY) to be false for unknownFlag")
        }
        if f.Is(syscall.O_RDWR) {
                t.Errorf("expected Is(O_RDWR) to be false for unknownFlag")
        }
}

func TestFlagsStringUnknown(t *testing.T) {
        f := Flags(-1)
        if f.String() != "O_NONE" {
                t.Errorf("expected 'O_NONE' for unknown flags, got '%s'", f.String())
        }
}

func TestNewOldnameNewnameEmpty(t *testing.T) {
        var oldname, newname [128]byte
        f := NewOldnameNewname(oldname[:], newname[:])
        if f.Name() != "" {
                t.Errorf("expected empty Name(), got '%s'", f.Name())
        }
        if !strings.Contains(f.String(), "old:") || !strings.Contains(f.String(), "->new:") {
                t.Errorf("expected String() to contain 'old:' and '->new:', got '%s'", f.String())
        }
}

func TestNewPathnameEmpty(t *testing.T) {
        var pathname [128]byte
        f := NewPathname(pathname[:])
        if f.Name() != "" {
                t.Errorf("expected empty Name(), got '%s'", f.Name())
        }
        if !strings.Contains(f.String(), "pathname:") {
                t.Errorf("expected String() to contain 'pathname:', got '%s'", f.String())
        }
}

func TestFdFileSetFlags(t *testing.T) {
        fdFile := NewFd(1, "test.txt", 0)
        if fdFile.Flags() != Flags(0) {
                t.Errorf("expected flags 0, got %v", fdFile.Flags())
        }
        fdFile.SetFlags(syscall.O_WRONLY)
        if fdFile.Flags() != Flags(syscall.O_WRONLY) {
                t.Errorf("expected O_WRONLY after SetFlags, got %v", fdFile.Flags())
        }
}

func TestFdFileAddFlags(t *testing.T) {
        fdFile := NewFd(1, "test.txt", syscall.O_RDWR)
        fdFile.AddFlags(syscall.O_APPEND)
        expected := Flags(syscall.O_RDWR | syscall.O_APPEND)
        if fdFile.Flags() != expected {
                t.Errorf("expected O_RDWR|O_APPEND after AddFlags, got %v", fdFile.Flags())
        }
}

func TestFdFileDup(t *testing.T) {
        fdFile := NewFd(1, "original.txt", syscall.O_RDONLY)
        duped := fdFile.Dup(42)
        if duped.Name() != "original.txt" {
                t.Errorf("expected duped name 'original.txt', got '%s'", duped.Name())
        }
        if !strings.Contains(duped.String(), "42") {
                t.Errorf("expected duped String() to contain fd 42, got '%s'", duped.String())
        }
        if strings.Contains(duped.String(), "%(1,") {
                t.Errorf("expected duped String() to NOT contain old fd 1, got '%s'", duped.String())
        }
}