1
2
3
4
5
6
7 package windows_test
8
9 import (
10 "strings"
11 "syscall"
12 "testing"
13
14 "golang.org/x/sys/windows"
15 )
16
17 func testSetGetenv(t *testing.T, key, value string) {
18 err := windows.Setenv(key, value)
19 if err != nil {
20 t.Fatalf("Setenv failed to set %q: %v", value, err)
21 }
22 newvalue, found := windows.Getenv(key)
23 if !found {
24 t.Fatalf("Getenv failed to find %v variable (want value %q)", key, value)
25 }
26 if newvalue != value {
27 t.Fatalf("Getenv(%v) = %q; want %q", key, newvalue, value)
28 }
29 }
30
31 func TestEnv(t *testing.T) {
32 testSetGetenv(t, "TESTENV", "AVALUE")
33
34 testSetGetenv(t, "TESTENV", "")
35 }
36
37 func TestGetProcAddressByOrdinal(t *testing.T) {
38
39
40
41 h, err := windows.LoadLibrary("shlwapi.dll")
42 if err != nil {
43 t.Fatalf("Failed to load shlwapi.dll: %s", err)
44 }
45 procIsOS, err := windows.GetProcAddressByOrdinal(h, 437)
46 if err != nil {
47 t.Fatalf("Could not find shlwapi.dll:IsOS by ordinal: %s", err)
48 }
49 const OS_NT = 1
50 r, _, _ := syscall.Syscall(procIsOS, 1, OS_NT, 0, 0)
51 if r == 0 {
52 t.Error("shlwapi.dll:IsOS(OS_NT) returned 0, expected non-zero value")
53 }
54 }
55
56 func TestGetSystemDirectory(t *testing.T) {
57 d, err := windows.GetSystemDirectory()
58 if err != nil {
59 t.Fatalf("Failed to get system directory: %s", err)
60 }
61 if !strings.HasSuffix(strings.ToLower(d), "\\system32") {
62 t.Fatalf("System directory does not end in system32: %s", d)
63 }
64 }
65
66 func TestGetWindowsDirectory(t *testing.T) {
67 d1, err := windows.GetWindowsDirectory()
68 if err != nil {
69 t.Fatalf("Failed to get Windows directory: %s", err)
70 }
71 d2, err := windows.GetSystemWindowsDirectory()
72 if err != nil {
73 t.Fatalf("Failed to get system Windows directory: %s", err)
74 }
75 if !strings.HasSuffix(strings.ToLower(d1), `\windows`) {
76 t.Fatalf("Windows directory does not end in windows: %s", d1)
77 }
78 if !strings.HasSuffix(strings.ToLower(d2), `\windows`) {
79 t.Fatalf("System Windows directory does not end in windows: %s", d2)
80 }
81 }
82 func TestFindProcByOrdinal(t *testing.T) {
83
84
85
86 dll, err := windows.LoadDLL("shlwapi.dll")
87 if err != nil {
88 t.Fatalf("Failed to load shlwapi.dll: %s", err)
89 }
90 procIsOS, err := dll.FindProcByOrdinal(437)
91 if err != nil {
92 t.Fatalf("Could not find shlwapi.dll:IsOS by ordinal: %s", err)
93 }
94 if procIsOS.Name != "#437" {
95 t.Fatalf("Proc's name is incorrect: %s,expected #437", procIsOS.Name)
96 }
97 const OS_NT = 1
98 r, _, _ := syscall.Syscall(procIsOS.Addr(), 1, OS_NT, 0, 0)
99 if r == 0 {
100 t.Error("shlwapi.dll:IsOS(OS_NT) returned 0, expected non-zero value")
101 }
102 }
103
View as plain text