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"