// This Source Code Form is subject to the terms of the Mozilla Public
// License, v. 2.0. If a copy of the MPL was not distributed with this
// file, You can obtain one at http://mozilla.org/MPL/2.0/.

package vix

import (
	"fmt"
	"path/filepath"
	"reflect"
	"runtime"
	"testing"
)

// assert fails the test if the condition is false.
func assert(tb testing.TB, condition bool, msg string, v ...interface{}) {
	if !condition {
		_, file, line, _ := runtime.Caller(1)
		fmt.Printf("\033[31m%s:%d: "+msg+"\033[39m\n\n", append([]interface{}{filepath.Base(file), line}, v...)...)
		tb.FailNow()
	}
}

// ok fails the test if an err is not nil.
func ok(tb testing.TB, err error) {
	if err != nil {
		_, file, line, _ := runtime.Caller(1)
		fmt.Printf("\033[31m%s:%d: unexpected error: %s\033[39m\n\n", filepath.Base(file), line, err.Error())
		tb.FailNow()
	}
}

// equals fails the test if exp is not equal to act.
func equals(tb testing.TB, exp, act interface{}) {
	if !reflect.DeepEqual(exp, act) {
		_, file, line, _ := runtime.Caller(1)
		fmt.Printf("\033[31m%s:%d:\n\n\texp: %#v\n\n\tgot: %#v\033[39m\n\n", filepath.Base(file), line, exp, act)
		tb.FailNow()
	}
}

func TestFindItems(t *testing.T) {
	// t.Log("Here we go!")

	// host, err := Connect(ConnectConfig{
	// 	Provider: VMWARE_WORKSTATION,
	// 	Options:  VERIFY_SSL_CERT,
	// })

	// if err != nil {
	// 	t.Errorf("incorrect result\ngot:  %#v\nwant: %#v", err, nil)
	// }

	// defer host.Disconnect()

	// t.Log("Searching for running vms...")

	// urls, err := host.FindItems(FIND_RUNNING_VMS)
	// if err != nil {
	// 	t.Errorf("incorrect result\ngot:  %#v\nwant: %#v", err, nil)
	// }

	// for _, url := range urls {
	// 	t.Logf("%s \n", url)
	// }
}
