package daemon

import (
	"runtime"
	"testing"

	"github.com/docker/docker/volume"
)

func TestParseVolumesFrom(t *testing.T) {
	cases := []struct {
		spec    string
		expID   string
		expMode string
		fail    bool
	}{
		{"", "", "", true},
		{"foobar", "foobar", "rw", false},
		{"foobar:rw", "foobar", "rw", false},
		{"foobar:ro", "foobar", "ro", false},
		{"foobar:baz", "", "", true},
	}

	parser := volume.NewParser(runtime.GOOS)

	for _, c := range cases {
		id, mode, err := parser.ParseVolumesFrom(c.spec)
		if c.fail {
			if err == nil {
				t.Fatalf("Expected error, was nil, for spec %s\n", c.spec)
			}
			continue
		}

		if id != c.expID {
			t.Fatalf("Expected id %s, was %s, for spec %s\n", c.expID, id, c.spec)
		}
		if mode != c.expMode {
			t.Fatalf("Expected mode %s, was %s for spec %s\n", c.expMode, mode, c.spec)
		}
	}
}