/* * Copyright (c) MuleSoft, Inc. All rights reserved. http://www.mulesoft.com * The software in this package is published under the terms of the CPAL v1.0 * license, a copy of which has been included with this distribution in the * LICENSE.txt file. */ package org.mule.runtime.core.el; import static org.hamcrest.Matchers.hasItem; import static org.hamcrest.Matchers.hasItems; import static org.hamcrest.Matchers.hasSize; import static org.hamcrest.Matchers.is; import static org.hamcrest.Matchers.sameInstance; import static org.junit.Assert.assertThat; import static org.mule.runtime.api.metadata.DataType.STRING; import org.mule.runtime.api.el.BindingContext; import org.mule.runtime.api.el.ExpressionModule; import org.mule.runtime.api.el.ModuleNamespace; import org.mule.runtime.api.metadata.TypedValue; import org.mule.tck.junit4.AbstractMuleTestCase; import org.junit.Test; public class DefaultBindingContextBuilderTestCase extends AbstractMuleTestCase { private static final String ID = "id"; private static final String OTHER_ID = "otherId"; private BindingContext.Builder builder = new DefaultBindingContextBuilder(); private TypedValue<String> typedValue = new TypedValue<>("", STRING); private ModuleNamespace namespace = new ModuleNamespace("org", "mule", "mymodule"); @Test public void addsBinding() { BindingContext context = builder.addBinding(ID, typedValue).build(); assertThat(context.bindings(), hasSize(1)); assertThat(context.identifiers(), hasItem("id")); assertThat(context.lookup("id").get(), is(sameInstance(typedValue))); } @Test public void addsBindings() { ExpressionModule module = ExpressionModule.builder(namespace).addBinding("id", typedValue).build(); BindingContext previousContext = BindingContext.builder() .addBinding(ID, typedValue) .addBinding(OTHER_ID, typedValue) .addModule(module) .build(); BindingContext context = builder.addAll(previousContext).build(); assertThat(context.bindings(), hasSize(2)); assertThat(context.identifiers(), hasItems(ID, OTHER_ID)); assertThat(context.lookup(ID).get(), is(sameInstance(typedValue))); assertThat(context.lookup(OTHER_ID).get(), is(sameInstance(typedValue))); assertThat(context.modules(), hasSize(1)); assertThat(context.modules(), hasItems(module)); } @Test public void fromPreviousBindings() { ExpressionModule module = ExpressionModule.builder(namespace).addBinding("id", typedValue).build(); BindingContext previousContext = BindingContext.builder() .addBinding(ID, typedValue) .addBinding(OTHER_ID, typedValue) .addModule(module) .build(); BindingContext context = BindingContext.builder(previousContext).build(); assertThat(context.bindings(), hasSize(2)); assertThat(context.identifiers(), hasItems(ID, OTHER_ID)); assertThat(context.lookup(ID).get(), is(sameInstance(typedValue))); assertThat(context.lookup(OTHER_ID).get(), is(sameInstance(typedValue))); assertThat(context.modules(), hasSize(1)); assertThat(context.modules(), hasItems(module)); } }