}))
			Expect(manifest.InstanceGroups[2].VMType).To(Equal("default"))
			Expect(manifest.InstanceGroups[2].Networks[0]).To(Equal(core.InstanceGroupNetwork{
				Name:      "private",
				StaticIPs: []string{"10.244.4.13"},
			}))
			Expect(manifest.InstanceGroups[2].Name).To(Equal("fake-dns-server"))
			Expect(manifest.InstanceGroups[2].Instances).To(Equal(1))
			Expect(manifest.InstanceGroups[2].VMType).To(Equal("default"))
			Expect(manifest.InstanceGroups[2].Stemcell).To(Equal("linux"))
			Expect(manifest.InstanceGroups[2].PersistentDiskType).To(Equal("default"))
			Expect(manifest.InstanceGroups[2].Jobs).To(gomegamatchers.ContainSequence([]core.InstanceGroupJob{
				{
					Name:    "turbulence_agent",
					Release: "turbulence",
				},
				{
					Name:    "fake-dns-server",
					Release: "consul",
				},
			}))

			Expect(manifest.Releases).To(ContainElement(core.Release{
				Name:    "turbulence",
				Version: "latest",
			}))
			Expect(manifest.Releases).To(ContainElement(core.Release{
				Name:    "consul",
				Version: "latest",
			}))

			Expect(manifest.Properties.TurbulenceAgent.API).To(Equal(core.PropertiesTurbulenceAgentAPI{
package gomegamatchers_test

import (
	"github.com/pivotal-cf-experimental/gomegamatchers"

	. "github.com/onsi/ginkgo"
	. "github.com/onsi/gomega"
)

var _ = Describe("ContainSequence", func() {
	Context("when actual is not a slice", func() {
		It("should error", func() {
			_, err := gomegamatchers.ContainSequence(func() {}).Match("not a slice")
			Expect(err).To(HaveOccurred())
		})
	})

	Context("when actual is a slice", func() {
		var sequence []string

		BeforeEach(func() {
			sequence = []string{
				"value-1",
				"value-2",
				"value-3",
			}
		})

		Context("when the entire sequence is present", func() {
			It("should succeed", func() {
				Expect([]string{