/******************************************************************************* * Copyright (c) 2016 Weasis Team and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * ${user} - initial API and implementation *******************************************************************************/ package org.weasis.core.api.media.data; import static org.assertj.core.api.Assertions.assertThat; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.weasis.core.api.media.data.TagW.TagType; public class TagWTest { public static final int ID_1 = 123; public static final int ID_2 = 234; public static final int VM_MIN_1 = 10; public static final int VM_MIN_2 = -10; public static final int VM_MAX_1 = 20; public static final int VM_MAX_2 = -20; public static final String DISPLAY_NAME_1 = "lorem ipsum"; //$NON-NLS-1$ public static final String KEYWORD_1 = "TagWTest"; //$NON-NLS-1$ public static final String KEYWORD_2 = "TagWTestSecond"; //$NON-NLS-1$ public static final String STRING_VALUE_1 = "a string value"; //$NON-NLS-1$ public static final Integer INTEGER_VALUE_1 = 123456789; public static final String[] STRING_ARRAY = { "1", "2" }; //$NON-NLS-1$ //$NON-NLS-2$ public static final Object[] OBJECT_ARRAY = { "1", Boolean.TRUE }; //$NON-NLS-1$ public static final String[] RESPONSE_STRING_ARRAY = { "Lorem", "ipsum", "dolor" }; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ public static final String RESPONSE_STRING = "Lorem Ipsum Dolor sit amet"; //$NON-NLS-1$ private TagW tag; @Before public void setUp() { } @Test public void test_constructors() throws Exception { try { new TagW(ID_1, KEYWORD_1, DISPLAY_NAME_1, null, VM_MIN_2, VM_MAX_2, new String[] { "value1", "value2" }); //$NON-NLS-1$ //$NON-NLS-2$ Assert.fail("Must throws an exception"); //$NON-NLS-1$ } catch (Exception e) { assertThat(e).isExactlyInstanceOf(IllegalArgumentException.class) .hasMessage("defaultValue is not compliant to the tag type"); //$NON-NLS-1$ } tag = new TagW(ID_1, KEYWORD_1, DISPLAY_NAME_1, TagType.STRING, VM_MIN_1, VM_MAX_1, null); assertThat(tag).isNotNull().hashCode(); assertThat(tag.getId()).isEqualTo(ID_1); assertThat(tag.getKeyword()).isEqualTo(KEYWORD_1); assertThat(tag.getDisplayedName()).isEqualTo(tag.toString()).isEqualTo(DISPLAY_NAME_1); assertThat(tag.getType()).isEqualTo(TagType.STRING); assertThat(tag.getValueMultiplicity()).isEqualTo(tag.vmMax).isEqualTo(VM_MAX_1); assertThat(tag.vmMin).isEqualTo(VM_MIN_1); tag = new TagW(ID_1, KEYWORD_1, DISPLAY_NAME_1, null, VM_MIN_2, VM_MAX_2, null); assertThat(tag).isNotNull().hashCode(); assertThat(tag.getId()).isEqualTo(ID_1); assertThat(tag.getKeyword()).isEqualTo(KEYWORD_1); assertThat(tag.getDisplayedName()).isEqualTo(tag.toString()).isEqualTo(DISPLAY_NAME_1); assertThat(tag.getType()).isEqualTo(TagType.STRING); assertThat(tag.getValueMultiplicity()).isEqualTo(tag.vmMax).isEqualTo(1); assertThat(tag.vmMin).isEqualTo(1); tag = new TagW(ID_2, KEYWORD_1, TagType.STRING, VM_MIN_1, VM_MAX_1); assertThat(tag).isNotNull().hashCode(); assertThat(tag.getId()).isEqualTo(ID_2); assertThat(tag.getKeyword()).isEqualTo(KEYWORD_1); assertThat(tag.getDisplayedName()).isEqualTo(tag.toString()).isEqualTo("Tag W Test"); //$NON-NLS-1$ assertThat(tag.getType()).isEqualTo(TagType.STRING); assertThat(tag.getValueMultiplicity()).isEqualTo(tag.vmMax).isEqualTo(VM_MAX_1); assertThat(tag.vmMin).isEqualTo(VM_MIN_1); tag = new TagW(ID_2, KEYWORD_1, TagType.BOOLEAN); assertThat(tag).isNotNull().hashCode(); assertThat(tag.getId()).isEqualTo(ID_2); assertThat(tag.getKeyword()).isEqualTo(KEYWORD_1); assertThat(tag.getDisplayedName()).isEqualTo(tag.toString()).isEqualTo("Tag W Test"); //$NON-NLS-1$ assertThat(tag.getType()).isEqualTo(TagType.BOOLEAN); assertThat(tag.getValueMultiplicity()).isEqualTo(tag.vmMax).isEqualTo(1); assertThat(tag.vmMin).isEqualTo(1); } @Test public void test_isTypeCompliant() throws Exception { tag = new TagW(KEYWORD_1, TagType.STRING); assertThat(tag.isTypeCompliant(null)).isTrue(); assertThat(tag.isTypeCompliant(STRING_VALUE_1)).isTrue(); assertThat(tag.isTypeCompliant(INTEGER_VALUE_1)).isFalse(); assertThat(tag.isTypeCompliant(OBJECT_ARRAY)).isFalse(); tag = new TagW(KEYWORD_1, TagType.STRING, VM_MIN_1, VM_MAX_1); assertThat(tag.isTypeCompliant(null)).isTrue(); assertThat(tag.isTypeCompliant(STRING_VALUE_1)).isTrue(); assertThat(tag.isTypeCompliant(INTEGER_VALUE_1)).isFalse(); assertThat(tag.isTypeCompliant(OBJECT_ARRAY)).isFalse(); assertThat(tag.isTypeCompliant(STRING_ARRAY)).isFalse(); tag = new TagW(KEYWORD_1, TagType.STRING, VM_MIN_1, STRING_ARRAY.length); assertThat(tag.isTypeCompliant(null)).isTrue(); assertThat(tag.isTypeCompliant(STRING_VALUE_1)).isTrue(); assertThat(tag.isTypeCompliant(INTEGER_VALUE_1)).isFalse(); assertThat(tag.isTypeCompliant(OBJECT_ARRAY)).isFalse(); assertThat(tag.isTypeCompliant(STRING_ARRAY)).isTrue(); tag = new TagW(KEYWORD_1, TagType.STRING, VM_MIN_1, Integer.MAX_VALUE); assertThat(tag.isTypeCompliant(null)).isTrue(); assertThat(tag.isTypeCompliant(STRING_VALUE_1)).isTrue(); assertThat(tag.isTypeCompliant(INTEGER_VALUE_1)).isFalse(); assertThat(tag.isTypeCompliant(OBJECT_ARRAY)).isFalse(); assertThat(tag.isTypeCompliant(STRING_ARRAY)).isTrue(); } @Test public void test_getValueMultiplicity_with_object() throws Exception { assertThat(TagW.getValueMultiplicity(null)).isEqualTo(0); assertThat(TagW.getValueMultiplicity(new String[0])).isEqualTo(0); assertThat(TagW.getValueMultiplicity(OBJECT_ARRAY)).isEqualTo(2); assertThat(TagW.getValueMultiplicity(STRING_ARRAY)).isEqualTo(2); assertThat(TagW.getValueMultiplicity(INTEGER_VALUE_1)).isEqualTo(1); assertThat(TagW.getValueMultiplicity(STRING_VALUE_1)).isEqualTo(1); } @Test public void test_getValueFromIndex() throws Exception { assertThat(TagW.getValueFromIndex(null, -1)).isNull(); assertThat(TagW.getValueFromIndex(null, 0)).isNull(); assertThat(TagW.getValueFromIndex(null, 1)).isNull(); assertThat(TagW.getValueFromIndex(STRING_VALUE_1, -1)).isEqualTo(STRING_VALUE_1); assertThat(TagW.getValueFromIndex(STRING_VALUE_1, 0)).isEqualTo(STRING_VALUE_1); assertThat(TagW.getValueFromIndex(STRING_VALUE_1, 1)).isEqualTo(STRING_VALUE_1); assertThat(TagW.getValueFromIndex(STRING_ARRAY, -1)).isNull(); assertThat(TagW.getValueFromIndex(STRING_ARRAY, 0)).isEqualTo(STRING_ARRAY[0]); assertThat(TagW.getValueFromIndex(STRING_ARRAY, 1)).isEqualTo(STRING_ARRAY[1]); assertThat(TagW.getValueFromIndex(STRING_ARRAY, 2)).isNull(); } @Test public void test_isStringFamilyType() throws Exception { assertThat(new TagW(KEYWORD_1, TagType.BOOLEAN).isStringFamilyType()).isFalse(); assertThat(new TagW(KEYWORD_1, TagType.BYTE).isStringFamilyType()).isFalse(); assertThat(new TagW(KEYWORD_1, TagType.COLOR).isStringFamilyType()).isFalse(); assertThat(new TagW(KEYWORD_1, TagType.DATE).isStringFamilyType()).isFalse(); assertThat(new TagW(KEYWORD_1, TagType.DATETIME).isStringFamilyType()).isFalse(); assertThat(new TagW(KEYWORD_1, TagType.DOUBLE).isStringFamilyType()).isFalse(); assertThat(new TagW(KEYWORD_1, TagType.FLOAT).isStringFamilyType()).isFalse(); assertThat(new TagW(KEYWORD_1, TagType.INTEGER).isStringFamilyType()).isFalse(); assertThat(new TagW(KEYWORD_1, TagType.LIST).isStringFamilyType()).isFalse(); assertThat(new TagW(KEYWORD_1, TagType.OBJECT).isStringFamilyType()).isFalse(); assertThat(new TagW(KEYWORD_1, TagType.THUMBNAIL).isStringFamilyType()).isFalse(); assertThat(new TagW(KEYWORD_1, TagType.TIME).isStringFamilyType()).isFalse(); assertThat(new TagW(KEYWORD_1, TagType.STRING).isStringFamilyType()).isTrue(); assertThat(new TagW(KEYWORD_1, TagType.TEXT).isStringFamilyType()).isTrue(); assertThat(new TagW(KEYWORD_1, TagType.URI).isStringFamilyType()).isTrue(); } @Test public void test_equals() throws Exception { TagW t1, t2; t1 = new TagW(KEYWORD_1, TagType.STRING); assertThat(t1.equals(t1)).isTrue(); assertThat(t1.equals(null)).isFalse(); assertThat(t1.equals(KEYWORD_1)).isFalse(); t1 = new TagW(KEYWORD_1, TagType.STRING); t2 = new TagW(KEYWORD_1, TagType.STRING); assertThat(t1.equals(t2)).isFalse(); t1 = new TagW(ID_1, null, TagType.DICOM_PERSON_NAME); t2 = new TagW(ID_1, KEYWORD_1, TagType.DICOM_PERSON_NAME); assertThat(t1.equals(t2)).isFalse(); t1 = new TagW(ID_1, KEYWORD_1, TagType.DICOM_PERSON_NAME); t2 = new TagW(ID_1, KEYWORD_2, TagType.DICOM_PERSON_NAME); assertThat(t1.equals(t2)).isFalse(); t1 = new TagW(ID_1, KEYWORD_1, TagType.DICOM_PERSON_NAME); t2 = new TagW(ID_1, KEYWORD_1, TagType.DICOM_PERSON_NAME); assertThat(t1.equals(t2)).isTrue(); t1 = new TagW(ID_1, null, TagType.DICOM_PERSON_NAME); t2 = new TagW(ID_1, null, TagType.DICOM_PERSON_NAME); assertThat(t1.equals(t2)).isTrue(); } @Test public void test_hashCode() throws Exception { assertThat(new TagW(ID_1, KEYWORD_1, TagType.STRING).hashCode()).isEqualTo(-707519243); assertThat(new TagW(ID_1, null, TagType.STRING).hashCode()).isEqualTo(4774); } @Test public void test_getFormattedText() throws Exception { assertThat(TagW.getFormattedText(null, null)).isEmpty(); assertThat(TagW.getFormattedText("", null)).isEmpty(); //$NON-NLS-1$ assertThat(TagW.getFormattedText(STRING_VALUE_1, null)).isEqualTo(STRING_VALUE_1); assertThat(TagW.getFormattedText(RESPONSE_STRING_ARRAY, null)).isEqualTo("Lorem\\ipsum\\dolor"); //$NON-NLS-1$ float[] floatValues = { 1.23f, 4.56f, 7.89f }; assertThat(TagW.getFormattedText(floatValues, null)).isEqualTo("1.23, 4.56, 7.89"); //$NON-NLS-1$ double[] doubleValues = { 9.8765d, 4.3210d }; assertThat(TagW.getFormattedText(doubleValues, null)).isEqualTo("9.8765, 4.321"); //$NON-NLS-1$ int[] intValues = { 1234, 567, 890 }; assertThat(TagW.getFormattedText(intValues, null)).isEqualTo("1234, 567, 890"); //$NON-NLS-1$ assertThat(TagW.getFormattedText(Boolean.TRUE, null)).isEqualTo("true"); //$NON-NLS-1$ } @Test public void test_getFormattedText_with_pattern() throws Exception { String value = "Lorem Ipsum"; //$NON-NLS-1$ assertThat(TagW.getFormattedText(value, "")).isEqualTo(value); //$NON-NLS-1$ assertThat(TagW.getFormattedText(value, "$V")).isEqualTo(value); //$NON-NLS-1$ assertThat(TagW.getFormattedText(value, "$V ")).isEqualTo(value); //$NON-NLS-1$ assertThat(TagW.getFormattedText(value, " $V")).isEqualTo(value); //$NON-NLS-1$ assertThat(TagW.getFormattedText(value, "test: $V")).isEqualTo("test: " + value); //$NON-NLS-1$ //$NON-NLS-2$ assertThat(TagW.getFormattedText(value, "test: $V and $V")).isEqualTo("test: " + value + " and $V"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ assertThat(TagW.getFormattedText(STRING_ARRAY, "test: $V and $V plus $V")) //$NON-NLS-1$ .isEqualTo("test: " + STRING_ARRAY[0] + "\\" + STRING_ARRAY[1] + " and $V plus $V"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ } }