// Copyright 2019 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

package experiment

import (
	"context"
	"testing"

	"github.com/google/go-cmp/cmp"
)

func TestGetAndSetExperiments(t *testing.T) {
	const testExperiment1 = "test-experiment-1"
	s := map[string]bool{testExperiment1: true}
	ctx := NewContext(context.Background(), NewSet(s))
	want := NewSet(s)
	got := FromContext(ctx)
	if !cmp.Equal(want, got, cmp.AllowUnexported(Set{})) {
		t.Fatalf("FromContext(ctx) = %v; want = %v", got, want)
	}
	if !IsActive(ctx, testExperiment1) {
		t.Fatalf("s.IsActive(ctx, %q) = false; want = true", testExperiment1)
	}
	const testExperiment2 = "inactive-experiment"
	if IsActive(ctx, testExperiment2) {
		t.Fatalf("s.IsActive(ctx, %q) = true; want = false", testExperiment2)
	}
}
