package filetree

import (
	"fmt"
)

const (
	Unmodified DiffType = iota
	Modified
	Added
	Removed
)

// DiffType defines the comparison result between two FileNodes
type DiffType int

// String of a DiffType
func (diff DiffType) String() string {
	switch diff {
	case Unmodified:
		return "Unmodified"
	case Modified:
		return "Modified"
	case Added:
		return "Added"
	case Removed:
		return "Removed"
	default:
		return fmt.Sprintf("%d", int(diff))
	}
}

// merge two DiffTypes into a single result. Essentially, return the given value unless they two values differ,
// in which case we can only determine that there is "a change".
func (diff DiffType) merge(other DiffType) DiffType {
	if diff == other {
		return diff
	}
	return Modified
}