summaryrefslogtreecommitdiff
path: root/go/parallel-letter-frequency/parallel_letter_frequency_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'go/parallel-letter-frequency/parallel_letter_frequency_test.go')
-rw-r--r--go/parallel-letter-frequency/parallel_letter_frequency_test.go58
1 files changed, 58 insertions, 0 deletions
diff --git a/go/parallel-letter-frequency/parallel_letter_frequency_test.go b/go/parallel-letter-frequency/parallel_letter_frequency_test.go
new file mode 100644
index 0000000..99fed05
--- /dev/null
+++ b/go/parallel-letter-frequency/parallel_letter_frequency_test.go
@@ -0,0 +1,58 @@
+package letter
+
+import (
+ "reflect"
+ "testing"
+)
+
+// In the separate file frequency.go, you are given a function, Frequency(),
+// to sequentially count letter frequencies in a single text.
+// Perform this exercise on parallelism using Go concurrency features.
+// Make concurrent calls to Frequency and combine results to obtain the answer.
+
+func TestConcurrentFrequency(t *testing.T) {
+ seq := Frequency(euro + dutch + us)
+ con := ConcurrentFrequency([]string{euro, dutch, us})
+ if !reflect.DeepEqual(con, seq) {
+ t.Fatal("ConcurrentFrequency wrong result")
+ }
+}
+
+var (
+ euro = `Freude schöner Götterfunken
+Tochter aus Elysium,
+Wir betreten feuertrunken,
+Himmlische, dein Heiligtum!
+Deine Zauber binden wieder
+Was die Mode streng geteilt;
+Alle Menschen werden Brüder,
+Wo dein sanfter Flügel weilt.`
+ dutch = `Wilhelmus van Nassouwe
+ben ik, van Duitsen bloed,
+den vaderland getrouwe
+blijf ik tot in den dood.
+Een Prinse van Oranje
+ben ik, vrij, onverveerd,
+den Koning van Hispanje
+heb ik altijd geëerd.`
+ us = `O say can you see by the dawn's early light,
+What so proudly we hailed at the twilight's last gleaming,
+Whose broad stripes and bright stars through the perilous fight,
+O'er the ramparts we watched, were so gallantly streaming?
+And the rockets' red glare, the bombs bursting in air,
+Gave proof through the night that our flag was still there;
+O say does that star-spangled banner yet wave,
+O'er the land of the free and the home of the brave?`
+)
+
+func BenchmarkSequentialFrequency(b *testing.B) {
+ for i := 0; i < b.N; i++ {
+ Frequency(euro + dutch + us)
+ }
+}
+
+func BenchmarkConcurrentFrequency(b *testing.B) {
+ for i := 0; i < b.N; i++ {
+ ConcurrentFrequency([]string{euro, dutch, us})
+ }
+}