all repos — min @ 9e5f3be78459a61c300d06a39279bb8e74d97f51

A small but practical concatenative programming language.

tests/net.min

 1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
'test load
'test import

"net" describe

  {} socket :srv1
  {} socket :srv2
  {} socket :cli1
  {} socket :cli2

  
  {} socket "httpbin.org" 80 connect @cli1
  "min v$1" (version) => % :user-agent

  "GET /user-agent HTTP/1.1\r\nHost: httpbin.org\r\nUser-Agent: $1\r\n\r\n" (user-agent) => % :req

  "" :response
  cli1 req send 

  cli1 recv-line :line
  (response line) => "\n" join @response 
  (line "\}" match not) 
  (
    cli1 recv-line @line
    (response line) => "\n" join @response 
  ) while

  ;HTTP/1.1 200 OK
  ;Connection: keep-alive
  ;Server: meinheld/0.6.1
  ;Date: Sun, 19 Nov 2017 13:37:15 GMT
  ;Content-Type: application/json
  ;Access-Control-Allow-Origin: *
  ;Access-Control-Allow-Credentials: true
  ;X-Powered-By: Flask
  ;X-Processed-Time: 0.00111794471741
  ;Content-Length: 34
  ;Via: 1.1 vegur
  ;
  ;{"user-agent": "min v0.16.0"}

  (response "\n\n" split 1 get from-json /user-agent user-agent ==) assert

  (srv1 srv2 ==) assert
  (cli1 cli2 !=) assert

  report
  clear-stack
  srv1 close
  srv2 close
  cli1 close
  cli2 close