Commit eb937ea
Changed files (2)
domain
test
domain/movie_library.go
@@ -15,6 +15,26 @@ func (self *MovieLibrary) Find(fn Predicate) *Movie {
return nil
}
+func (self *MovieLibrary) FindAll(fn Predicate) []Movie {
+ items := []Movie{}
+
+ for i := range self.Movies {
+ movie := self.Movies[i]
+
+ if fn(movie) {
+ items = append(items, movie)
+ }
+ }
+
+ return items
+}
+
+func (self *MovieLibrary) FindAllMoviesByPixar() []Movie {
+ return self.FindAll(func(x Movie) bool {
+ return x.Studio.Name == "Pixar"
+ })
+}
+
func (self *MovieLibrary) Add(movie Movie) {
found := self.Find(func(x Movie) bool {
return x.Equals(movie)
test/unit/movie_library_test.go
@@ -48,4 +48,24 @@ func TestMovieLibrary(t *testing.T) {
})
})
})
+
+ t.Run("Find", func(t *testing.T) {
+ subject.Add(shawshank_redemption)
+ subject.Add(chasing_amy)
+ subject.Add(man_on_fire)
+ subject.Add(toy_story)
+ subject.Add(up)
+ subject.Add(cars)
+ subject.Add(monsters_inc)
+ subject.Add(fantasia)
+ subject.Add(dumbo)
+ subject.Add(pinocchio)
+
+ t.Run("returns all Pixar movies", func(t *testing.T) {
+ movies := subject.FindAllMoviesByPixar()
+ expected := [...]domain.Movie{toy_story, cars, up, monsters_inc}
+
+ assert.ElementsMatch(t, expected, movies)
+ })
+ })
}