/*
* Copyright 2010 Chris Pheby
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.jadira.bindings.core;
import static org.junit.Assert.assertEquals;
import java.util.concurrent.atomic.AtomicBoolean;
import org.jadira.bindings.core.annotation.DefaultBinding;
import org.jadira.bindings.core.api.Binding;
import org.jadira.bindings.core.api.FromUnmarshaller;
import org.jadira.bindings.core.api.ToMarshaller;
import org.jadira.bindings.core.binder.BasicBinder;
import org.jadira.bindings.core.binder.Binder;
import org.jadira.bindings.core.general.binding.CompositeBinding;
import org.jadira.bindings.core.jdk.AtomicBooleanStringBinding;
import org.jadira.bindings.core.test.Narrow;
import org.jadira.bindings.core.test.SubjectC;
import org.jadira.bindings.core.test.SubjectD;
import org.junit.Test;
public class BasicBinderTest {
private static final Binder BINDER = new BasicBinder();
@Test
public void testConvertToString() {
// BigInteger integer = new BigInteger("10");
// assertEquals("10", BINDER.convertTo(BigInteger.class, String.class, integer));
SubjectC sub = new SubjectC("Test");
assertEquals("Test:MARSHALLED_BY_A", BINDER.convertTo(SubjectC.class, String.class, sub));
}
@Test
public void testConvertToStringWithQualifier() {
SubjectD sub = new SubjectD("Test");
assertEquals("Test:MARSHALLED_BY_A", BINDER.convertTo(SubjectD.class, String.class, sub, Narrow.class));
}
@Test
public void testConvertFromString() {
assertEquals(new SubjectD("Test"), BINDER.convertTo(String.class, SubjectD.class, "Test:MARSHALLED_BY_B"));
}
@Test
public void testConvertFromStringWithQualifier() {
assertEquals(new SubjectD("Test"), BINDER.convertTo(String.class, SubjectD.class, "Test", Narrow.class));
}
@Test
public void testFindBinding() {
Binding<SubjectD, String> match = BINDER.findBinding(SubjectD.class, String.class);
assertEquals(CompositeBinding.class, match.getClass());
Binding<AtomicBoolean, String> match2 = BINDER.findBinding(AtomicBoolean.class, String.class);
assertEquals(AtomicBooleanStringBinding.class, match2.getClass());
}
@Test
public void testFindBindingWithQualifier() {
Binding<SubjectD, String> match = BINDER.findBinding(SubjectD.class, String.class, Narrow.class);
assertEquals(CompositeBinding.class, match.getClass());
Binding<AtomicBoolean, String> match2 = BINDER.findBinding(AtomicBoolean.class, String.class, DefaultBinding.class);
assertEquals(AtomicBooleanStringBinding.class, match2.getClass());
}
@Test
public void testFindMarshaller() {
ToMarshaller<SubjectD, String> match = BINDER.findMarshaller(SubjectD.class, String.class);
assertEquals(CompositeBinding.class, match.getClass());
ToMarshaller<AtomicBoolean, String> match2 = BINDER.findMarshaller(AtomicBoolean.class, String.class);
assertEquals(AtomicBooleanStringBinding.class, match2.getClass());
}
@Test
public void testFindMarshallerWithQualifier() {
ToMarshaller<SubjectD, String> match = BINDER.findMarshaller(SubjectD.class, String.class, Narrow.class);
assertEquals(CompositeBinding.class, match.getClass());
ToMarshaller<AtomicBoolean, String> match2 = BINDER.findMarshaller(AtomicBoolean.class, String.class, DefaultBinding.class);
assertEquals(AtomicBooleanStringBinding.class, match2.getClass());
}
@Test
public void testFindUnmarshaller() {
FromUnmarshaller<SubjectD, String> match = BINDER.findUnmarshaller(SubjectD.class, String.class);
assertEquals(CompositeBinding.class, match.getClass());
FromUnmarshaller<AtomicBoolean, String> match2 = BINDER.findUnmarshaller(AtomicBoolean.class, String.class);
assertEquals(AtomicBooleanStringBinding.class, match2.getClass());
}
@Test
public void testFindUnmarshallerWithQualifier() {
FromUnmarshaller<SubjectD, String> match = BINDER.findUnmarshaller(SubjectD.class, String.class, Narrow.class);
assertEquals(CompositeBinding.class, match.getClass());
FromUnmarshaller<AtomicBoolean, String> match2 = BINDER.findUnmarshaller(AtomicBoolean.class, String.class, DefaultBinding.class);
assertEquals(AtomicBooleanStringBinding.class, match2.getClass());
}
}