// Copyright 2014 The Go Authors.  All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

package main

import (
	"bytes"
	"cmd/internal/goobj"
	"io/ioutil"
	"testing"
)

func TestLinkHello(t *testing.T) {
	p := &Prog{
		GOOS:     "darwin",
		GOARCH:   "amd64",
		Error:    func(s string) { t.Error(s) },
		StartSym: "_rt0_go",
	}
	var buf bytes.Buffer
	p.link(&buf, "testdata/hello.6")
	if p.NumError > 0 {
		return
	}
	if p.Syms[goobj.SymID{"_rt0_go", 0}] == nil || p.Syms[goobj.SymID{"hello", 1}] == nil {
		t.Errorf("Syms = %v, want at least [_rt0_go hello<1>]", p.Syms)
	}

	// uncomment to leave file behind for execution:
	if false {
		ioutil.WriteFile("a.out", buf.Bytes(), 0777)
	}
	checkGolden(t, buf.Bytes(), "testdata/link.hello.darwin.amd64")
}
