package vfs

import (
	"os"
	"path/filepath"
	"runtime"
	"testing"

	"github.com/stretchr/testify/require"
)

func TestOsNewWithRelativePath(t *testing.T) {
	wd, err := os.Getwd()
	require.NoError(t, err)

	p, err := New(".")
	require.NoError(t, err)
	require.Equal(t, wd, p.Native())
}

func TestOsPathParent(t *testing.T) {
	wd, err := os.Getwd()
	require.NoError(t, err)

	p := MustNew(wd)
	require.NotNil(t, p)

	// Traverse all the way to the root.
	for {
		q := p.Parent()
		if q == nil {
			// Parent returns nil when it is the root.
			break
		}

		p = q
	}

	// We should have reached the root.
	if runtime.GOOS == "windows" {
		require.Equal(t, filepath.VolumeName(wd)+`\`, p.Native())
	} else {
		require.Equal(t, "/", p.Native())
	}
}

func TestOsPathNative(t *testing.T) {
	wd, err := os.Getwd()
	require.NoError(t, err)

	p := MustNew(wd)
	require.NotNil(t, p)
	require.Equal(t, wd, p.Native())
}