package version_test

import (
	"testing"

	"gotest.tools/assert"

	"php-parser/pkg/version"
)

func Test(t *testing.T) {
	ver, err := version.New("7.4")
	assert.NilError(t, err)

	assert.Equal(t, *ver, version.Version{
		Major: 7,
		Minor: 4,
	})
}

func TestLeadingZero(t *testing.T) {
	ver, err := version.New("07.04")
	assert.NilError(t, err)

	assert.Equal(t, *ver, version.Version{
		Major: 7,
		Minor: 4,
	})
}

func TestInRange(t *testing.T) {
	s, err := version.New("7.0")
	assert.NilError(t, err)

	e, err := version.New("7.4")
	assert.NilError(t, err)

	ver, err := version.New("7.0")
	assert.NilError(t, err)
	assert.Assert(t, ver.InRange(s, e))

	ver, err = version.New("7.2")
	assert.NilError(t, err)
	assert.Assert(t, ver.InRange(s, e))

	ver, err = version.New("7.4")
	assert.NilError(t, err)
	assert.Assert(t, ver.InRange(s, e))
}

func TestInRangePHP8(t *testing.T) {
	s, err := version.New("8.0")
	assert.NilError(t, err)

	e, err := version.New("8.1")
	assert.NilError(t, err)

	ver, err := version.New("8.0")
	assert.NilError(t, err)
	assert.Assert(t, ver.InRange(s, e))

	ver, err = version.New("8.1")
	assert.NilError(t, err)
	assert.Assert(t, ver.InRange(s, e))
}
