// Copyright 2022 schukai GmbH. All rights reserved.
// Use of this source code is governed by a AGPL-3.0
// license that can be found in the LICENSE file.

package xflags

import (
	"github.com/stretchr/testify/assert"
	"testing"
)

type ConfigStruct6Sub1 struct {
	Command3Flag1 bool
}

type ConfigStruct6 struct {
	ValGlobal1       bool
	ValGlobal2       bool
	ValCommand1Flag1 bool
	ValCommand1Flag2 bool
	ValSub           ConfigStruct6Sub1
}

func TestFlagSetShadowError(t *testing.T) {
	settings := New("test", testExecutionStruct{})
	settings.SetShadow(3)
	assert.True(t, settings.HasErrors())

}

func TestFlagCopyToShadow(t *testing.T) {

	c := ConfigStruct6{}
	c.ValSub.Command3Flag1 = true

	settings := New("test", testExecutionStruct{})
	assert.NotNil(t, settings)

	settings.SetShadow(&c)
	assert.False(t, settings.HasErrors())

	settings.Parse([]string{"-a", "command1", "-d"})

	assert.True(t, c.ValGlobal1)
	assert.True(t, c.ValCommand1Flag2)

}