Replace FixturePreparer.visit() with list()
The visit() method was dropped in favor of a list() method as the latter makes it easier to treat fixtureFactory, simpleFixturePreparer and compositeFixturePreparer as simple collections of already flattened and deduped *simpleFixturePreparers. That will be used in a follow up change. Bug: 183235980 Test: m nothing Change-Id: Ia41ae9bd4f9c39c85865ba698e0da6be00519caf
This commit is contained in:
@@ -429,20 +429,10 @@ func OptionalFixturePreparer(preparer FixturePreparer) FixturePreparer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
type simpleFixturePreparerVisitor func(preparer *simpleFixturePreparer)
|
|
||||||
|
|
||||||
// FixturePreparer is an opaque interface that can change a fixture.
|
// FixturePreparer is an opaque interface that can change a fixture.
|
||||||
type FixturePreparer interface {
|
type FixturePreparer interface {
|
||||||
// visit calls the supplied visitor with each *simpleFixturePreparer instances in this preparer,
|
// Return the flattened and deduped list of simpleFixturePreparer pointers.
|
||||||
visit(simpleFixturePreparerVisitor)
|
list() []*simpleFixturePreparer
|
||||||
}
|
|
||||||
|
|
||||||
type fixturePreparers []FixturePreparer
|
|
||||||
|
|
||||||
func (f fixturePreparers) visit(visitor simpleFixturePreparerVisitor) {
|
|
||||||
for _, p := range f {
|
|
||||||
p.visit(visitor)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// dedupAndFlattenPreparers removes any duplicates and flattens any composite FixturePreparer
|
// dedupAndFlattenPreparers removes any duplicates and flattens any composite FixturePreparer
|
||||||
@@ -457,7 +447,7 @@ func (f fixturePreparers) visit(visitor simpleFixturePreparerVisitor) {
|
|||||||
//
|
//
|
||||||
// Returns a deduped and flattened list of the preparers starting with the ones in base with any
|
// Returns a deduped and flattened list of the preparers starting with the ones in base with any
|
||||||
// additional ones from the preparers list added afterwards.
|
// additional ones from the preparers list added afterwards.
|
||||||
func dedupAndFlattenPreparers(base []*simpleFixturePreparer, preparers fixturePreparers) []*simpleFixturePreparer {
|
func dedupAndFlattenPreparers(base []*simpleFixturePreparer, preparers []FixturePreparer) []*simpleFixturePreparer {
|
||||||
if len(preparers) == 0 {
|
if len(preparers) == 0 {
|
||||||
return base
|
return base
|
||||||
}
|
}
|
||||||
@@ -473,24 +463,27 @@ func dedupAndFlattenPreparers(base []*simpleFixturePreparer, preparers fixturePr
|
|||||||
list[i] = s
|
list[i] = s
|
||||||
}
|
}
|
||||||
|
|
||||||
preparers.visit(func(preparer *simpleFixturePreparer) {
|
for _, p := range preparers {
|
||||||
if _, seen := visited[preparer]; !seen {
|
for _, s := range p.list() {
|
||||||
visited[preparer] = struct{}{}
|
if _, seen := visited[s]; !seen {
|
||||||
list = append(list, preparer)
|
visited[s] = struct{}{}
|
||||||
|
list = append(list, s)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
})
|
}
|
||||||
|
|
||||||
return list
|
return list
|
||||||
}
|
}
|
||||||
|
|
||||||
// compositeFixturePreparer is a FixturePreparer created from a list of fixture preparers.
|
// compositeFixturePreparer is a FixturePreparer created from a list of fixture preparers.
|
||||||
type compositeFixturePreparer struct {
|
type compositeFixturePreparer struct {
|
||||||
|
// The flattened and deduped list of simpleFixturePreparer pointers encapsulated within this
|
||||||
|
// composite preparer.
|
||||||
preparers []*simpleFixturePreparer
|
preparers []*simpleFixturePreparer
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *compositeFixturePreparer) visit(visitor simpleFixturePreparerVisitor) {
|
func (c *compositeFixturePreparer) list() []*simpleFixturePreparer {
|
||||||
for _, p := range c.preparers {
|
return c.preparers
|
||||||
p.visit(visitor)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// simpleFixturePreparer is a FixturePreparer that applies a function to a fixture.
|
// simpleFixturePreparer is a FixturePreparer that applies a function to a fixture.
|
||||||
@@ -498,8 +491,8 @@ type simpleFixturePreparer struct {
|
|||||||
function func(fixture *fixture)
|
function func(fixture *fixture)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *simpleFixturePreparer) visit(visitor simpleFixturePreparerVisitor) {
|
func (s *simpleFixturePreparer) list() []*simpleFixturePreparer {
|
||||||
visitor(s)
|
return []*simpleFixturePreparer{s}
|
||||||
}
|
}
|
||||||
|
|
||||||
func newSimpleFixturePreparer(preparer func(fixture *fixture)) FixturePreparer {
|
func newSimpleFixturePreparer(preparer func(fixture *fixture)) FixturePreparer {
|
||||||
|
Reference in New Issue
Block a user