mirror of https://github.com/gissleh/irc.git
				
				
			
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							56 lines
						
					
					
						
							1.1 KiB
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							56 lines
						
					
					
						
							1.1 KiB
						
					
					
				
								package irctest_test
							 | 
						|
								
							 | 
						|
								import (
							 | 
						|
									"net"
							 | 
						|
									"testing"
							 | 
						|
								
							 | 
						|
									"git.aiterp.net/gisle/irc/internal/irctest"
							 | 
						|
								)
							 | 
						|
								
							 | 
						|
								func TestInteraction(t *testing.T) {
							 | 
						|
									interaction := irctest.Interaction{
							 | 
						|
										Lines: []irctest.InteractionLine{
							 | 
						|
											{Kind: 'C', Data: "FIRST MESSAGE"},
							 | 
						|
											{Kind: 'S', Data: "SERVER MESSAGE"},
							 | 
						|
											{Kind: 'C', Data: "SECOND MESSAGE"},
							 | 
						|
										},
							 | 
						|
									}
							 | 
						|
								
							 | 
						|
									addr, err := interaction.Listen()
							 | 
						|
									if err != nil {
							 | 
						|
										t.Fatal("Listen:", err)
							 | 
						|
									}
							 | 
						|
								
							 | 
						|
									conn, err := net.Dial("tcp", addr)
							 | 
						|
									if err != nil {
							 | 
						|
										t.Fatal("Dial:", err)
							 | 
						|
									}
							 | 
						|
								
							 | 
						|
									_, err = conn.Write([]byte("FIRST MESSAGE\r\n"))
							 | 
						|
									if err != nil {
							 | 
						|
										t.Fatal("Write:", err)
							 | 
						|
									}
							 | 
						|
								
							 | 
						|
									buffer := make([]byte, 64)
							 | 
						|
									n, err := conn.Read(buffer)
							 | 
						|
									if err != nil {
							 | 
						|
										t.Fatal("Read:", err)
							 | 
						|
									}
							 | 
						|
									if string(buffer[:n]) != "SERVER MESSAGE\r\n" {
							 | 
						|
										t.Fatal("Read not correct:", string(buffer[:n]))
							 | 
						|
									}
							 | 
						|
								
							 | 
						|
									_, err = conn.Write([]byte("SECOND MESSAGE\r\n"))
							 | 
						|
									if err != nil {
							 | 
						|
										t.Fatal("Write 2:", err)
							 | 
						|
									}
							 | 
						|
								
							 | 
						|
									interaction.Wait()
							 | 
						|
								
							 | 
						|
									if interaction.Failure != nil {
							 | 
						|
										t.Error("Index:", interaction.Failure.Index)
							 | 
						|
										t.Error("Result:", interaction.Failure.Result)
							 | 
						|
										t.Error("NetErr:", interaction.Failure.NetErr)
							 | 
						|
										t.FailNow()
							 | 
						|
									}
							 | 
						|
								}
							 |