github.com/metux/go-metabuild@v0.0.0-20240118143255-d9ed5ab697f9/util/compiler/base/machine_test.go (about)

     1  package base
     2  
     3  import (
     4  	"testing"
     5  )
     6  
     7  var testdata = map[string]Machine{
     8  	"x86_64-unknown-linux": Machine{
     9  		Arch:   "x86_64",
    10  		Kernel: "linux",
    11  		Vendor: "unknown",
    12  	},
    13  	"x86_64-unknown-linux-gnu": Machine{
    14  		Arch:   "x86_64",
    15  		Kernel: "linux",
    16  		Vendor: "unknown",
    17  		System: "gnu",
    18  	},
    19  	"x86_64-gdcproject-linux-gnu": Machine{
    20  		Arch:   "x86_64",
    21  		Kernel: "linux",
    22  		Vendor: "gdcproject",
    23  		System: "gnu",
    24  	},
    25  	"arm-unknown-linux-gnueabi": Machine{
    26  		Arch:   "arm",
    27  		Kernel: "linux",
    28  		Vendor: "unknown",
    29  		System: "gnueabi",
    30  	},
    31  	"arm-unknown-linux-androideabi": Machine{
    32  		Arch:   "arm",
    33  		Kernel: "linux",
    34  		Vendor: "unknown",
    35  		System: "androideabi",
    36  	},
    37  	"x86_64-w64-mingw32": Machine{
    38  		Arch:   "x86_64",
    39  		Kernel: "mingw32",
    40  		Vendor: "w64",
    41  	},
    42  	"x86_64-pc-mingw32": Machine{
    43  		Arch:   "x86_64",
    44  		Kernel: "mingw32",
    45  		Vendor: "pc",
    46  	},
    47  	"i686-linux-gnu": Machine{
    48  		Arch:   "i686",
    49  		Kernel: "linux",
    50  		Vendor: "",
    51  		System: "gnu",
    52  	},
    53  }
    54  
    55  func TestMachine(t *testing.T) {
    56  	for str, ent := range testdata {
    57  		ent.Valid = true
    58  		mach := ParseMachine(str)
    59  		if ent.Arch != mach.Arch {
    60  			t.Errorf("[%s] arch mismatch: have %s <-> want %s\n", str, ent.Arch, mach.Arch)
    61  		}
    62  		if ent.Kernel != mach.Kernel {
    63  			t.Errorf("[%s] kernel mismatch: have %s <-> want %s\n", str, ent.Kernel, mach.Kernel)
    64  		}
    65  		if ent.Vendor != mach.Vendor {
    66  			t.Errorf("[%s] vendor mismatch: have %s <-> want %s\n", str, ent.Vendor, mach.Vendor)
    67  		}
    68  		if ent.System != mach.System {
    69  			t.Errorf("[%s] system mismatch: have %s <-> want %s\n", str, ent.System, mach.System)
    70  		}
    71  		if str != ent.String() {
    72  			t.Errorf("[%s] serialize mismatch\n", ent.String())
    73  		}
    74  		if str != mach.String() {
    75  			t.Errorf("[%s] serialize mismatch\n", mach.String())
    76  		}
    77  	}
    78  }