Kaynağa Gözat

Checking for Disconnect.

Steve Thielemann 3 yıl önce
ebeveyn
işleme
f510a2ee51
1 değiştirilmiş dosya ile 54 ekleme ve 9 silme
  1. 54 9
      door/menu_test.go

+ 54 - 9
door/menu_test.go

@@ -137,7 +137,11 @@ func TestMenuConnection(t *testing.T) {
 	// BUG:  I can't use \x1b[A because of the way extended codes work there.
 	keys := "\x00\x50\x00\x50\r" // down, down, ENTER
 	server.Write([]byte(keys))
+	time.Sleep(time.Millisecond)
 	runtime.Gosched()
+	if d.Disconnected {
+		t.Errorf("Disconnected")
+	}
 
 	choice = m.Choose(&d)
 	if choice < 0 {
@@ -170,8 +174,16 @@ func TestMenuConnection(t *testing.T) {
 	}
 
 	keys = "\x00\x48\r" // up, ENTER
-	server.Write([]byte(keys))
+	_, err = server.Write([]byte(keys))
+	if err != nil {
+		t.Errorf("server.Write: %#v", err)
+	}
+
+	time.Sleep(time.Millisecond)
 	runtime.Gosched()
+	if d.Disconnected {
+		t.Errorf("Disconnected")
+	}
 
 	m.Chosen = 1
 	choice = m.Choose(&d)
@@ -202,11 +214,22 @@ func TestMenuConnection(t *testing.T) {
 	// Test HOME, END, selecting an option, 8 & 2.
 
 	keys = "\x00\x4f\r" // END, ENTER
-	server.Write([]byte(keys))
+	_, err = server.Write([]byte(keys))
+	if err != nil {
+		t.Errorf("server.Write: %#v", err)
+	}
+
+	time.Sleep(time.Millisecond)
 	runtime.Gosched()
+	if d.Disconnected {
+		t.Errorf("Disconnected")
+	}
 
 	m.Chosen = 1
 	choice = m.Choose(&d)
+	if choice < 0 {
+		t.Errorf("Error <0 from Choose: %d", choice)
+	}
 	option = m.GetOption(choice)
 
 	if choice != 3 || option != 'C' {
@@ -223,11 +246,17 @@ func TestMenuConnection(t *testing.T) {
 	// output = string(buffer[:r])
 
 	keys = "\x00\x47\r" // HOME, ENTER
-	server.Write([]byte(keys))
-	runtime.Gosched()
+	_, err = server.Write([]byte(keys))
+	if err != nil {
+		t.Errorf("server.Write: %#v", err)
+	}
+	time.Sleep(time.Millisecond)
 
 	m.Chosen = 2
 	choice = m.Choose(&d)
+	if choice < 0 {
+		t.Errorf("Error <0 from Choose: %d", choice)
+	}
 	option = m.GetOption(choice)
 
 	if choice != 1 || option != 'A' {
@@ -243,11 +272,18 @@ func TestMenuConnection(t *testing.T) {
 	server.SetReadDeadline(time.Time{})
 	// output = string(buffer[:r])
 
-	server.Write([]byte("B"))
-	runtime.Gosched()
+	_, err = server.Write([]byte("B"))
+	if err != nil {
+		t.Errorf("server.Write: %#v", err)
+	}
+
+	time.Sleep(time.Millisecond)
 
 	m.Chosen = 0
 	choice = m.Choose(&d)
+	if choice < 0 {
+		t.Errorf("Error <0 from Choose: %d", choice)
+	}
 	option = m.GetOption(choice)
 
 	if choice != 2 || option != 'B' {
@@ -266,11 +302,18 @@ func TestMenuConnection(t *testing.T) {
 	// output = string(buffer[:r])
 
 	keys = "2\r" // "Down", ENTER
-	server.Write([]byte(keys))
-	runtime.Gosched()
+	_, err = server.Write([]byte(keys))
+	if err != nil {
+		t.Errorf("server.Write: %#v", err)
+	}
+
+	time.Sleep(time.Millisecond)
 
 	m.Chosen = 1
 	choice = m.Choose(&d)
+	if choice < 0 {
+		t.Errorf("Error <0 from Choose: %d", choice)
+	}
 	option = m.GetOption(choice)
 
 	if choice != 3 || option != 'C' {
@@ -285,5 +328,7 @@ func TestMenuConnection(t *testing.T) {
 	}
 	server.SetReadDeadline(time.Time{})
 	// output = string(buffer[:r])
-
+	server.Close()
+	client.Close()
+	close(d.writerChannel)
 }