Sha256: fd5ae4e696ef699b812ce7346189d7112584ec1d3bb2e7d458e507e41dc8b183

Contents?: true

Size: 1.67 KB

Versions: 112

Compression:

Stored size: 1.67 KB

Contents

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.

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 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")
	}
}

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})
	}
}

Version data entries

112 entries across 112 versions & 1 rubygems

Version Path
trackler-2.2.1.170 tracks/go/exercises/parallel-letter-frequency/parallel_letter_frequency_test.go
trackler-2.2.1.169 tracks/go/exercises/parallel-letter-frequency/parallel_letter_frequency_test.go
trackler-2.2.1.167 tracks/go/exercises/parallel-letter-frequency/parallel_letter_frequency_test.go
trackler-2.2.1.166 tracks/go/exercises/parallel-letter-frequency/parallel_letter_frequency_test.go
trackler-2.2.1.165 tracks/go/exercises/parallel-letter-frequency/parallel_letter_frequency_test.go
trackler-2.2.1.164 tracks/go/exercises/parallel-letter-frequency/parallel_letter_frequency_test.go
trackler-2.2.1.163 tracks/go/exercises/parallel-letter-frequency/parallel_letter_frequency_test.go
trackler-2.2.1.162 tracks/go/exercises/parallel-letter-frequency/parallel_letter_frequency_test.go
trackler-2.2.1.161 tracks/go/exercises/parallel-letter-frequency/parallel_letter_frequency_test.go
trackler-2.2.1.160 tracks/go/exercises/parallel-letter-frequency/parallel_letter_frequency_test.go
trackler-2.2.1.159 tracks/go/exercises/parallel-letter-frequency/parallel_letter_frequency_test.go
trackler-2.2.1.158 tracks/go/exercises/parallel-letter-frequency/parallel_letter_frequency_test.go
trackler-2.2.1.157 tracks/go/exercises/parallel-letter-frequency/parallel_letter_frequency_test.go
trackler-2.2.1.156 tracks/go/exercises/parallel-letter-frequency/parallel_letter_frequency_test.go
trackler-2.2.1.155 tracks/go/exercises/parallel-letter-frequency/parallel_letter_frequency_test.go
trackler-2.2.1.154 tracks/go/exercises/parallel-letter-frequency/parallel_letter_frequency_test.go
trackler-2.2.1.153 tracks/go/exercises/parallel-letter-frequency/parallel_letter_frequency_test.go
trackler-2.2.1.152 tracks/go/exercises/parallel-letter-frequency/parallel_letter_frequency_test.go
trackler-2.2.1.151 tracks/go/exercises/parallel-letter-frequency/parallel_letter_frequency_test.go
trackler-2.2.1.150 tracks/go/exercises/parallel-letter-frequency/parallel_letter_frequency_test.go