package binary

import (
	"testing"

	"cos.googlesource.com/cos/tools.git/src/cmd/cos_image_analyzer/internal/input"
)

// test GetBinaryInf function
func TestGetBinaryInfo(t *testing.T) {
	kclImage1 := `linux /syslinux/vmlinuz.A init=/usr/lib/systemd/systemd boot=local rootwait ro noresume noswap loglevel=7 noinitrd console=ttyS0 security=apparmor virtio_net.napi_tx=1 systemd.unified_cgroup_hierarchy=false systemd.legacy_systemd_cgroup_controller=false csm.disabled=1  dm_verity.error_behavior=3 dm_verity.max_bios=-1 dm_verity.dev_wait=1       i915.modeset=1 cros_efi root=/dev/dm-0`
	for _, tc := range []struct {
		image    *input.ImageInfo
		flagInfo *input.FlagInfo
		want     *input.ImageInfo
	}{ // Version and BuildID
		{image: &input.ImageInfo{TempDir: "../testdata/image1/", RootfsPartition3: "../testdata/image1/rootfs/"},
			flagInfo: &input.FlagInfo{LocalPtr: true},
			want:     &input.ImageInfo{RootfsPartition3: "../testdata/image1", Version: "81", BuildID: "12871.119.0"}},
		{image: &input.ImageInfo{},
			flagInfo: &input.FlagInfo{LocalPtr: true},
			want:     &input.ImageInfo{}},
		{image: &input.ImageInfo{TempDir: "../testdata/image2/", RootfsPartition3: "../testdata/image2/rootfs/"},
			flagInfo: &input.FlagInfo{LocalPtr: true},
			want:     &input.ImageInfo{RootfsPartition3: "../testdata/image2/rootfs", Version: "77", BuildID: "12371.273.0"}},

		// Kernel Command Line
		{image: &input.ImageInfo{TempDir: "../testdata/image1", EFIPartition12: "../testdata/image1/efi/"},
			flagInfo: &input.FlagInfo{BinaryTypesSelected: []string{"Kernel-command-line"}},
			want:     &input.ImageInfo{TempDir: "../testdata/image1", EFIPartition12: "../testdata/image1/efi/", KernelCommandLine: kclImage1}},
	} {
		GetBinaryInfo(tc.image, tc.flagInfo)

		if tc.want.Version != tc.image.Version {
			t.Fatalf("GetBinaryInfo expected: %v, got: %v", tc.want.Version, tc.image.Version)
		}
		if tc.want.BuildID != tc.image.BuildID {
			t.Fatalf("GetBinaryInfo expected: %v, got: %v", tc.want.BuildID, tc.image.BuildID)
		}
		if tc.image.KernelCommandLine != tc.want.KernelCommandLine {
			t.Fatalf("Diff kernel command line expected:$%v$, got:$%v$", tc.want.KernelCommandLine, tc.image.KernelCommandLine)
		}
	}
}
