github.com/jflude/taocp@v0.0.0-20240210234939-99f2a91af3c2/mix/go_test.go (about)

     1  package mix
     2  
     3  import (
     4  	"errors"
     5  	"os"
     6  	"strings"
     7  	"testing"
     8  )
     9  
    10  func TestGoButton(t *testing.T) {
    11  	c, tmpDir := newSandbox(t, "")
    12  	defer closeSandbox(t, c, tmpDir)
    13  	if testing.Verbose() {
    14  		c.Tracer = os.Stdout
    15  		c.Trigger = 0
    16  	}
    17  
    18  	deck := append(append([]byte(nil), egLoader[0]...), egLoader[1]...)
    19  	deck = append(append(deck, egHelloWorld...), egTransfer...)
    20  	err := os.WriteFile("reader.mix", deck, 0644)
    21  	if err != nil {
    22  		t.Fatal("error:", err)
    23  	}
    24  	if err = c.GoButton(); !errors.Is(err, ErrHalted) {
    25  		t.Fatal("error:", err)
    26  	}
    27  	b, err := os.ReadFile("printer.mix")
    28  	if err != nil {
    29  		t.Fatal("error:", err)
    30  	}
    31  	if strings.Compare(string(b), okLoader) != 0 {
    32  		t.Error("got: incorrect printer output")
    33  	}
    34  }
    35  
    36  var egLoader = []string{
    37  	//   5   10   15   20   25   30   35   40   45   50   55   60   65   70   75   80
    38  	" O O6 Z O6    I C O4 0 EH A  F F CF 0  E   EU 0 IH G BB   EJ  CA. Z EU   EH E BA\n",
    39  	"   EU 2A-H S BB  C U 1AEH 2AEN V  E  CLU  ABG Z EH E BB J B. A  9               \n",
    40  }
    41  
    42  var egHelloWorld = "ABCDE" +
    43  	"6" +
    44  	"3000" + //                ORIG 3000
    45  	"0000001187" + // START    IOC  0(18)
    46  	"0787219621" + //          OUT  *+2(18)
    47  	"0000000133" + //          HLT
    48  	"0135582544" + //          ALF  HELLO
    49  	"0006882509" + //          ALF   WORL
    50  	"0067108864" + //          ALF  D
    51  	"          \n" //          END  START
    52  
    53  var egTransfer = "TRANS03000                                                                      \n"
    54  
    55  var okLoader = "\014HELLO WORLD\n"