diff options
-rw-r--r-- | 088file.mu | 10 | ||||
-rw-r--r-- | 092socket.mu | 25 |
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 [ |