aboutsummaryrefslogtreecommitdiff
path: root/tests/core/os/file.odin
blob: 99ae5b9287863a6e1a0b4cd9e72f3d7b1f05994d (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
package tests_core_os

import "core:os"
import "core:testing"

@(test)
test_clone :: proc(t: ^testing.T) {
	joined, j_err := os.join_path({#directory, "file.odin"}, context.temp_allocator)
	testing.expect_value(t, j_err, nil)
	f, err := os.open(joined)
	testing.expect_value(t, err, nil)
	testing.expect(t, f != nil)

	clone: ^os.File
	clone, err = os.clone(f)
	testing.expect_value(t, err, nil)
	testing.expect(t, clone != nil)

	testing.expect_value(t, os.name(clone), os.name(f))
	testing.expect(t, os.fd(clone) != os.fd(f))

	os.close(f)

	buf: [128]byte
	n: int
	n, err = os.read(clone, buf[:])
	testing.expect_value(t, err, nil)
	testing.expect(t, n > 13)
	testing.expect_value(t, string(buf[:13]), "package tests")

	os.close(clone)
}