From dac11a225d6ba9411de722b138284a534e46afaa Mon Sep 17 00:00:00 2001 From: MaurĂ­cio Antunes Date: Wed, 14 Feb 2024 15:53:54 -0300 Subject: feat: One more concurrency exercise --- exercises/concurrent/concurrent3/main_test.go | 43 +++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 exercises/concurrent/concurrent3/main_test.go (limited to 'exercises/concurrent/concurrent3') diff --git a/exercises/concurrent/concurrent3/main_test.go b/exercises/concurrent/concurrent3/main_test.go new file mode 100644 index 0000000..4a7cf33 --- /dev/null +++ b/exercises/concurrent/concurrent3/main_test.go @@ -0,0 +1,43 @@ +// concurrent3 +// Make the tests pass! + +// I AM NOT DONE +package main_test + +import ( + "bytes" + "fmt" + "testing" +) + +func TestSendAndReceive(t *testing.T) { + var buf bytes.Buffer + + messages := make(chan string) + sendAndReceive(&buf, messages) + + got := buf.String() + want := "Hello World" + + if got != want { + t.Errorf("got %q want %q", got, want) + } +} + +func sendAndReceive(buf *bytes.Buffer, messages chan string) { + go func() { + messages <- "Hello" + messages <- "World" + close(messages) + }() + + greeting := <-messages + fmt.Fprint(buf, greeting) + + // Here we just receive the first message + // Consider using a for-range loop to iterate over the messages + _, ok := <-messages + if !ok { + fmt.Fprint(buf, "Channel is closed") + } +} -- cgit v1.2.3-70-g09d2