about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--088file.mu10
-rw-r--r--092socket.mu25
2 files changed, 31 insertions, 4 deletions
diff --git a/088file.mu b/088file.mu
index 80a6be2b..f00eb7bf 100644
--- a/088file.mu
+++ b/088file.mu
@@ -23,6 +23,12 @@ def start-reading resources:&:resources, filename:text -> contents:&:source:char
     return
   }
   # fake file system
+  contents <- start-reading-from-fake-resources resources, filename
+]
+
+def start-reading-from-fake-resources resources:&:resources, resource:text -> contents:&:source:char [
+  local-scope
+  load-ingredients
   i:num <- copy 0
   data:&:@:resource <- get *resources, data:offset
   len:num <- length *data
@@ -31,8 +37,8 @@ def start-reading resources:&:resources, filename:text -> contents:&:source:char
     break-if done?
     tmp:resource <- index *data, i
     i <- add i, 1
-    curr-filename:text <- get tmp, name:offset
-    found?:bool <- equal filename, curr-filename
+    curr-resource:text <- get tmp, name:offset
+    found?:bool <- equal resource, curr-resource
     loop-unless found?
     contents:&:source:char, sink:&:sink:char <- new-channel 30
     curr-contents:text <- get tmp, contents:offset
diff --git a/092socket.mu b/092socket.mu
index c6418c8d..5e788da2 100644
--- a/092socket.mu
+++ b/092socket.mu
@@ -28,6 +28,27 @@ def example-handler query:text -> response:text [
   reply [abc]
 ]
 
+# To test client operations, use `assume-resources` with a filename that
+# begins with a hostname. (Filenames starting with '/' are assumed to be
+# local.)
+scenario example-client-test [
+  local-scope
+  assume-resources [
+    [example.com/] <- [
+      |abc|
+    ]
+  ]
+  run [
+    source:&:source:char <- start-reading-from-network resources, [example.com/]
+  ]
+  contents:text <- drain source
+  10:@:char/raw <- copy *contents
+  memory-should-contain [
+    10:array:character <- [abc
+]
+  ]
+]
+
 type request-handler = (recipe text -> text)
 
 def serve-one-request socket:num, request-handler:request-handler [
@@ -64,8 +85,8 @@ def start-reading-from-network resources:&:resources, uri:text -> contents:&:sou
     start-running receive-from-socket socket, sink
     return
   }
-  # todo: fake network
-  return 0/not-found
+  # fake network
+  contents <- start-reading-from-fake-resources resources, uri
 ]
 
 def request-socket socket:num, s:text -> socket:num [