/* * JBoss, Home of Professional Open Source * Copyright 2011, Red Hat, Inc. and individual contributors * by the @authors tag. See the copyright.txt in the distribution for a * full listing of individual contributors. * * This is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation; either version 2.1 of * the License, or (at your option) any later version. * * This software is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this software; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA, or see the FSF site: http://www.fsf.org. */ package org.mobicents.protocols.ss7.map.smstpdu; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertFalse; import static org.testng.Assert.assertNull; import static org.testng.Assert.assertTrue; import java.nio.charset.Charset; import org.mobicents.protocols.ss7.map.api.smstpdu.CharacterSet; import org.mobicents.protocols.ss7.map.api.smstpdu.DataCodingGroup; import org.mobicents.protocols.ss7.map.api.smstpdu.DataCodingSchemaIndicationType; import org.mobicents.protocols.ss7.map.api.smstpdu.DataCodingSchemaMessageClass; import org.testng.annotations.Test; /** * * @author sergey vetyutnev * */ public class DataCodingSchemeTest { @Test(groups = { "functional.decode", "smstpdu" }) public void testDecode() throws Exception { // Charset utf8Charset = Charset.forName("UTF-8"); Charset utf8Charset = Charset.forName("UTF-16BE"); // byte[] data = new byte[] { 0x31, 0x32, 0x33, 0x02, 0x1b, 0x3c, 0x1b, 0x3e, 0x20, 0x04, 0x05 }; byte[] data = new byte[] { 0x04, 0x10, 0x04, 0x11, 0x04, 0x12, 0x04, 0x13, 0x04, 0x14 }; String s = new String(data, utf8Charset); DataCodingSchemeImpl dcs = new DataCodingSchemeImpl(0); assertEquals(dcs.getDataCodingGroup(), DataCodingGroup.GeneralGroup); assertEquals(dcs.getCharacterSet(), CharacterSet.GSM7); assertFalse(dcs.getIsCompressed()); assertNull(dcs.getMessageClass()); assertNull(dcs.getDataCodingSchemaIndicationType()); assertNull(dcs.getSetIndicationActive()); dcs = new DataCodingSchemeImpl(8); assertEquals(dcs.getDataCodingGroup(), DataCodingGroup.GeneralGroup); assertEquals(dcs.getCharacterSet(), CharacterSet.UCS2); assertFalse(dcs.getIsCompressed()); assertNull(dcs.getMessageClass()); assertNull(dcs.getDataCodingSchemaIndicationType()); assertNull(dcs.getSetIndicationActive()); dcs = new DataCodingSchemeImpl(52); assertEquals(dcs.getDataCodingGroup(), DataCodingGroup.GeneralGroup); assertEquals(dcs.getCharacterSet(), CharacterSet.GSM8); assertTrue(dcs.getIsCompressed()); assertEquals(dcs.getMessageClass(), DataCodingSchemaMessageClass.Class0); assertNull(dcs.getDataCodingSchemaIndicationType()); assertNull(dcs.getSetIndicationActive()); dcs = new DataCodingSchemeImpl(26); assertEquals(dcs.getDataCodingGroup(), DataCodingGroup.GeneralGroup); assertEquals(dcs.getCharacterSet(), CharacterSet.UCS2); assertFalse(dcs.getIsCompressed()); assertEquals(dcs.getMessageClass(), DataCodingSchemaMessageClass.Class2); assertNull(dcs.getDataCodingSchemaIndicationType()); assertNull(dcs.getSetIndicationActive()); dcs = new DataCodingSchemeImpl(64); assertEquals(dcs.getDataCodingGroup(), DataCodingGroup.MessageMarkedForAutomaticDeletionGroup); assertEquals(dcs.getCharacterSet(), CharacterSet.GSM7); assertFalse(dcs.getIsCompressed()); assertNull(dcs.getMessageClass()); assertNull(dcs.getDataCodingSchemaIndicationType()); assertNull(dcs.getSetIndicationActive()); dcs = new DataCodingSchemeImpl(72); assertEquals(dcs.getDataCodingGroup(), DataCodingGroup.MessageMarkedForAutomaticDeletionGroup); assertEquals(dcs.getCharacterSet(), CharacterSet.UCS2); assertFalse(dcs.getIsCompressed()); assertNull(dcs.getMessageClass()); assertNull(dcs.getDataCodingSchemaIndicationType()); assertNull(dcs.getSetIndicationActive()); dcs = new DataCodingSchemeImpl(116); assertEquals(dcs.getDataCodingGroup(), DataCodingGroup.MessageMarkedForAutomaticDeletionGroup); assertEquals(dcs.getCharacterSet(), CharacterSet.GSM8); assertTrue(dcs.getIsCompressed()); assertEquals(dcs.getMessageClass(), DataCodingSchemaMessageClass.Class0); assertNull(dcs.getDataCodingSchemaIndicationType()); assertNull(dcs.getSetIndicationActive()); dcs = new DataCodingSchemeImpl(90); assertEquals(dcs.getDataCodingGroup(), DataCodingGroup.MessageMarkedForAutomaticDeletionGroup); assertEquals(dcs.getCharacterSet(), CharacterSet.UCS2); assertFalse(dcs.getIsCompressed()); assertEquals(dcs.getMessageClass(), DataCodingSchemaMessageClass.Class2); assertNull(dcs.getDataCodingSchemaIndicationType()); assertNull(dcs.getSetIndicationActive()); dcs = new DataCodingSchemeImpl(192); assertEquals(dcs.getDataCodingGroup(), DataCodingGroup.MessageWaitingIndicationGroupDiscardMessage); assertEquals(dcs.getCharacterSet(), CharacterSet.GSM7); assertFalse(dcs.getIsCompressed()); assertNull(dcs.getMessageClass()); assertEquals(dcs.getDataCodingSchemaIndicationType(), DataCodingSchemaIndicationType.VoicemailMessageWaiting); assertFalse(dcs.getSetIndicationActive()); dcs = new DataCodingSchemeImpl(201); assertEquals(dcs.getDataCodingGroup(), DataCodingGroup.MessageWaitingIndicationGroupDiscardMessage); assertEquals(dcs.getCharacterSet(), CharacterSet.GSM7); assertFalse(dcs.getIsCompressed()); assertNull(dcs.getMessageClass()); assertEquals(dcs.getDataCodingSchemaIndicationType(), DataCodingSchemaIndicationType.FaxMessageWaiting); assertTrue(dcs.getSetIndicationActive()); dcs = new DataCodingSchemeImpl(210); assertEquals(dcs.getDataCodingGroup(), DataCodingGroup.MessageWaitingIndicationGroupStoreMessage); assertEquals(dcs.getCharacterSet(), CharacterSet.GSM7); assertFalse(dcs.getIsCompressed()); assertNull(dcs.getMessageClass()); assertEquals(dcs.getDataCodingSchemaIndicationType(), DataCodingSchemaIndicationType.ElectronicMailMessageWaiting); assertFalse(dcs.getSetIndicationActive()); dcs = new DataCodingSchemeImpl(235); assertEquals(dcs.getDataCodingGroup(), DataCodingGroup.MessageWaitingIndicationGroupStoreMessage); assertEquals(dcs.getCharacterSet(), CharacterSet.UCS2); assertFalse(dcs.getIsCompressed()); assertNull(dcs.getMessageClass()); assertEquals(dcs.getDataCodingSchemaIndicationType(), DataCodingSchemaIndicationType.OtherMessageWaiting); assertTrue(dcs.getSetIndicationActive()); dcs = new DataCodingSchemeImpl(241); assertEquals(dcs.getDataCodingGroup(), DataCodingGroup.DataCodingMessageClass); assertEquals(dcs.getCharacterSet(), CharacterSet.GSM7); assertFalse(dcs.getIsCompressed()); assertEquals(dcs.getMessageClass(), DataCodingSchemaMessageClass.Class1); assertNull(dcs.getDataCodingSchemaIndicationType()); assertNull(dcs.getSetIndicationActive()); dcs = new DataCodingSchemeImpl(247); assertEquals(dcs.getDataCodingGroup(), DataCodingGroup.DataCodingMessageClass); assertEquals(dcs.getCharacterSet(), CharacterSet.GSM8); assertFalse(dcs.getIsCompressed()); assertEquals(dcs.getMessageClass(), DataCodingSchemaMessageClass.Class3); assertNull(dcs.getDataCodingSchemaIndicationType()); assertNull(dcs.getSetIndicationActive()); } @Test(groups = { "functional.encode", "smstpdu" }) public void testEncode() throws Exception { DataCodingSchemeImpl dcs = new DataCodingSchemeImpl(DataCodingGroup.GeneralGroup, null, null, null, CharacterSet.GSM7, false); assertEquals(dcs.getCode(), 0); dcs = new DataCodingSchemeImpl(DataCodingGroup.GeneralGroup, null, null, null, CharacterSet.UCS2, false); assertEquals(dcs.getCode(), 8); dcs = new DataCodingSchemeImpl(DataCodingGroup.GeneralGroup, DataCodingSchemaMessageClass.Class0, null, null, CharacterSet.GSM8, true); assertEquals(dcs.getCode(), 52); dcs = new DataCodingSchemeImpl(DataCodingGroup.GeneralGroup, DataCodingSchemaMessageClass.Class2, null, null, CharacterSet.UCS2, false); assertEquals(dcs.getCode(), 26); dcs = new DataCodingSchemeImpl(DataCodingGroup.MessageMarkedForAutomaticDeletionGroup, null, null, null, CharacterSet.GSM7, false); assertEquals(dcs.getCode(), 64); dcs = new DataCodingSchemeImpl(DataCodingGroup.MessageMarkedForAutomaticDeletionGroup, null, null, null, CharacterSet.UCS2, false); assertEquals(dcs.getCode(), 72); dcs = new DataCodingSchemeImpl(DataCodingGroup.MessageMarkedForAutomaticDeletionGroup, DataCodingSchemaMessageClass.Class0, null, null, CharacterSet.GSM8, true); assertEquals(dcs.getCode(), 116); dcs = new DataCodingSchemeImpl(DataCodingGroup.MessageMarkedForAutomaticDeletionGroup, DataCodingSchemaMessageClass.Class2, null, null, CharacterSet.UCS2, false); assertEquals(dcs.getCode(), 90); dcs = new DataCodingSchemeImpl(DataCodingGroup.MessageWaitingIndicationGroupDiscardMessage, null, DataCodingSchemaIndicationType.VoicemailMessageWaiting, false, CharacterSet.GSM7, false); assertEquals(dcs.getCode(), 192); dcs = new DataCodingSchemeImpl(DataCodingGroup.MessageWaitingIndicationGroupDiscardMessage, null, DataCodingSchemaIndicationType.FaxMessageWaiting, true, CharacterSet.GSM7, false); assertEquals(dcs.getCode(), 201); dcs = new DataCodingSchemeImpl(DataCodingGroup.MessageWaitingIndicationGroupStoreMessage, null, DataCodingSchemaIndicationType.ElectronicMailMessageWaiting, false, CharacterSet.GSM7, false); assertEquals(dcs.getCode(), 210); dcs = new DataCodingSchemeImpl(DataCodingGroup.MessageWaitingIndicationGroupStoreMessage, null, DataCodingSchemaIndicationType.OtherMessageWaiting, true, CharacterSet.UCS2, false); assertEquals(dcs.getCode(), 235); dcs = new DataCodingSchemeImpl(DataCodingGroup.DataCodingMessageClass, DataCodingSchemaMessageClass.Class1, null, null, CharacterSet.GSM7, false); assertEquals(dcs.getCode(), 241); dcs = new DataCodingSchemeImpl(DataCodingGroup.DataCodingMessageClass, DataCodingSchemaMessageClass.Class3, null, null, CharacterSet.GSM8, false); assertEquals(dcs.getCode(), 247); } }