You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: comparator_test.go
    path of file: ./repos/flyte/flytepropeller/pkg/controller/nodes/branch
    
    the code of the file until where you have to start completion: package branch

import (
	"fmt"
	"testing"
	"time"

	"github.com/stretchr/testify/assert"

	"github.com/flyteorg/flyte/flyteidl/clients/go/coreutils"
	"github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/core"
)

func TestEvaluate_int(t *testing.T) {
	p1 := coreutils.MustMakePrimitive(1)
	p2 := coreutils.MustMakePrimitive(2)
	{
		// p1 > p2 = false
		b, err := Evaluate(p1, p2, core.ComparisonExpression_GT)
		assert.NoError(t, err)
		assert.False(t, b)
		b, err = Evaluate(p2, p1, core.ComparisonExpression_GT)
		assert.NoError(t, err)
		assert.True(t, b)
	}
	{
		// p1 >= p2 = false
		b, err := Evaluate(p1, p2, core.ComparisonExpression_GTE)
		assert.NoError(t, err)
		assert.False(t, b)
		b, err = Evaluate(p2, p1, core.ComparisonExpression_GTE)
		assert.NoError(t, err)
		assert.True(t, b)
	}
	{
		// p1 < p2 = true
		b, err := Evaluate(p1, p2, core.ComparisonExpression_LT)
		assert.NoError(t, err)
		assert.True(t, b)
		b, err = Evaluate(p2, p1, core.ComparisonExpression_LT)
		assert.NoError(t, err)
		assert.False(t, b)
	}
	{
		// p1 <= p2 = true
		b, err := Evaluate(p1, p2, core.ComparisonExpression_LTE)
		assert.NoError(t, err)
		assert.True(t, b)
		b, err = Evaluate(p2, p1, core.ComparisonExpression_LTE)
		assert.NoError(t, err)
		assert.False(t, b)
	}
	{
		b, err := Evaluate(p1, p2, core.ComparisonExpression_NEQ)
		assert.NoError(t, err)
		assert.True(t, b)
		b, err = Evaluate(p2, p1, core.ComparisonExpression_EQ)
		assert.NoError(t, err)
		assert.False(t, b)
		b, err = Evaluate(p1, p1, core.ComparisonExpression_EQ)
		assert.NoError(t, err)
		assert.True(t, b)
		b, err = Evaluate(p1, p1, core.ComparisonExpression_NEQ)
		assert.NoError(t, err)
		assert.False(t, b)
	}
	{
		b, err := Evaluate(p1, p1, core.ComparisonExpression_LTE)
		assert.NoError(t, err)
		assert.True(t, b)
		b, e
    
func TestEvaluate_float(t *testing.T) {
	p1 := coreutils.MustMakePrimitive(1.0)
	p2 := coreutils.MustMakePrimitive(2.0)
	{
		// p1 > p2 = false
		b, err := Evaluate(p1, p2, core.ComparisonExpression_GT)
		assert.NoError(t, err)
		assert.False(t, b)
		b, err = Evaluate(p2, p1, core.ComparisonExpression_GT)
		assert.NoError(t, err)
		assert.True(t, b)
	}
	{
		// p1 >= p2 = false
		b, err := Evaluate(p1, p2, core.ComparisonExpression_GTE)
		assert.NoError(t, err)
		assert.False(t, b)
		b, err = Evaluate(p2, p1, core.ComparisonExpression_GTE)
		assert.NoError(t, err)
		assert.True(t, b)
	}
	{
		// p1 < p2 = true
		b, err := Evaluate(p1, p2, core.ComparisonExpression_LT)
		assert.NoError(t, err)
		assert.True(t, b)
		b, err = Evaluate(p2, p1, core.ComparisonExpression_LT)
		assert.NoError(t, err)
		assert.False(t, b)
	}
	{
		// p1 <= p2 = true
		b, err := Evaluate(p1, p2, core.ComparisonExpression_LTE)
		assert.NoError(t, err)
		assert.True(t, b)
		b, err = Evaluate(p2, p1, core.ComparisonExpression_LTE)
		assert.NoError(t, err)
		assert.False(t, b)
	}
	{
		b, err := Evaluate(p1, p2, core.ComparisonExpression_NEQ)
		assert.NoError(t, err)
		assert.True(t, b)
		b, err = Evaluate(p2, p1, core.ComparisonExpression_EQ)
		assert.NoError(t, err)
		assert.False(t, b)
		b, err = Evaluate(p1, p1, core.ComparisonExpression_EQ)
		assert.NoError(t, err)
		assert.True(t, b)
		b, err = Evaluate(p1, p1, core.ComparisonExpression_NEQ)
		assert.NoError(t, err)
		assert.False(t, b)
	}
	{
		b, err := Evaluate(p1, p1, core.ComparisonExpression_LTE)
		assert.NoError(t, err)
		assert.True(t, b)
		b, err = Evaluate(p1, p1, core.ComparisonExpression_LT)
		assert.NoError(t, err)
		assert.False(t, b)
	}
	{
		b, err := Evaluate(p1, p1, core.ComparisonExpression_GTE)
		assert.NoError(t, err)
		assert.True(t, b)
		b, err = Evaluate(p1, p1, core.ComparisonExpression_GT)
		assert.NoError(t, err)
		assert.False(t, b)
	}
}