package com.cloudhopper.commons.gsm; /* * #%L * ch-commons-gsm * %% * Copyright (C) 2012 Cloudhopper by Twitter * %% * 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. * #L% */ import org.junit.*; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * * @author joelauer */ public class DataCodingTest { private static final Logger logger = LoggerFactory.getLogger(DataCodingTest.class); @Test public void parse() { DataCoding dc = DataCoding.parse(DataCoding.CHAR_ENC_DEFAULT); Assert.assertEquals((byte)0x00, dc.getByteValue()); Assert.assertEquals(DataCoding.CHAR_ENC_DEFAULT, dc.getCharacterEncoding()); Assert.assertEquals(DataCoding.Group.CHARACTER_ENCODING, dc.getCodingGroup()); Assert.assertEquals(DataCoding.MESSAGE_CLASS_0, dc.getMessageClass()); Assert.assertEquals(false, dc.isCompressed()); dc = DataCoding.parse(DataCoding.CHAR_ENC_8BIT); Assert.assertEquals((byte)0x04, dc.getByteValue()); Assert.assertEquals(DataCoding.CHAR_ENC_8BIT, dc.getCharacterEncoding()); Assert.assertEquals(DataCoding.Group.CHARACTER_ENCODING, dc.getCodingGroup()); Assert.assertEquals(DataCoding.MESSAGE_CLASS_0, dc.getMessageClass()); Assert.assertEquals(false, dc.isCompressed()); dc = DataCoding.parse(DataCoding.CHAR_ENC_IA5); Assert.assertEquals((byte)0x01, dc.getByteValue()); Assert.assertEquals(DataCoding.CHAR_ENC_IA5, dc.getCharacterEncoding()); Assert.assertEquals(DataCoding.Group.CHARACTER_ENCODING, dc.getCodingGroup()); Assert.assertEquals(DataCoding.MESSAGE_CLASS_0, dc.getMessageClass()); Assert.assertEquals(false, dc.isCompressed()); dc = DataCoding.parse(DataCoding.CHAR_ENC_UCS2); Assert.assertEquals((byte)0x08, dc.getByteValue()); Assert.assertEquals(DataCoding.CHAR_ENC_UCS2, dc.getCharacterEncoding()); Assert.assertEquals(DataCoding.Group.CHARACTER_ENCODING, dc.getCodingGroup()); Assert.assertEquals(DataCoding.MESSAGE_CLASS_0, dc.getMessageClass()); Assert.assertEquals(false, dc.isCompressed()); // common to see a byte value of -15 used dc = DataCoding.parse((byte)-15); Assert.assertEquals((byte)0xF1, dc.getByteValue()); Assert.assertEquals(DataCoding.CHAR_ENC_DEFAULT, dc.getCharacterEncoding()); Assert.assertEquals(DataCoding.Group.MESSAGE_CLASS, dc.getCodingGroup()); Assert.assertEquals(DataCoding.MESSAGE_CLASS_1, dc.getMessageClass()); Assert.assertEquals(false, dc.isCompressed()); // common to see a byte value of 16 used dc = DataCoding.parse((byte)16); Assert.assertEquals((byte)16, dc.getByteValue()); Assert.assertEquals(DataCoding.CHAR_ENC_DEFAULT, dc.getCharacterEncoding()); Assert.assertEquals(DataCoding.Group.GENERAL, dc.getCodingGroup()); Assert.assertEquals(DataCoding.MESSAGE_CLASS_0, dc.getMessageClass()); Assert.assertEquals(false, dc.isCompressed()); // common to see a byte value of 17 used dc = DataCoding.parse((byte)17); Assert.assertEquals((byte)17, dc.getByteValue()); Assert.assertEquals(DataCoding.CHAR_ENC_DEFAULT, dc.getCharacterEncoding()); Assert.assertEquals(DataCoding.Group.GENERAL, dc.getCodingGroup()); Assert.assertEquals(DataCoding.MESSAGE_CLASS_1, dc.getMessageClass()); Assert.assertEquals(false, dc.isCompressed()); // common to see a byte value of 20 used dc = DataCoding.parse((byte)20); Assert.assertEquals((byte)20, dc.getByteValue()); Assert.assertEquals(DataCoding.CHAR_ENC_8BIT, dc.getCharacterEncoding()); Assert.assertEquals(DataCoding.Group.GENERAL, dc.getCodingGroup()); Assert.assertEquals(DataCoding.MESSAGE_CLASS_0, dc.getMessageClass()); Assert.assertEquals(false, dc.isCompressed()); // common to see a byte value of 21 used dc = DataCoding.parse((byte)21); Assert.assertEquals((byte)21, dc.getByteValue()); Assert.assertEquals(DataCoding.CHAR_ENC_8BIT, dc.getCharacterEncoding()); Assert.assertEquals(DataCoding.Group.GENERAL, dc.getCodingGroup()); Assert.assertEquals(DataCoding.MESSAGE_CLASS_1, dc.getMessageClass()); Assert.assertEquals(false, dc.isCompressed()); // common to see a byte value of 21 used dc = DataCoding.parse((byte)21); Assert.assertEquals((byte)21, dc.getByteValue()); Assert.assertEquals(DataCoding.CHAR_ENC_8BIT, dc.getCharacterEncoding()); Assert.assertEquals(DataCoding.Group.GENERAL, dc.getCodingGroup()); Assert.assertEquals(DataCoding.MESSAGE_CLASS_1, dc.getMessageClass()); Assert.assertEquals(false, dc.isCompressed()); // 1C is a reserved character encoding! dc = DataCoding.parse((byte)0x1C); Assert.assertEquals(DataCoding.CHAR_ENC_DEFAULT, dc.getCharacterEncoding()); Assert.assertEquals(DataCoding.Group.RESERVED, dc.getCodingGroup()); Assert.assertEquals(DataCoding.MESSAGE_CLASS_0, dc.getMessageClass()); Assert.assertEquals(false, dc.isCompressed()); // very complicated general data coding 111011 dc = DataCoding.parse((byte)0x3B); Assert.assertEquals((byte)0x3B, dc.getByteValue()); Assert.assertEquals(DataCoding.CHAR_ENC_UCS2, dc.getCharacterEncoding()); Assert.assertEquals(DataCoding.Group.GENERAL, dc.getCodingGroup()); Assert.assertEquals(DataCoding.MESSAGE_CLASS_3, dc.getMessageClass()); Assert.assertEquals(true, dc.isCompressed()); // message waiting indication group dc = DataCoding.parse((byte)0xEA); Assert.assertEquals((byte)0xEA, dc.getByteValue()); Assert.assertEquals(DataCoding.CHAR_ENC_UCS2, dc.getCharacterEncoding()); Assert.assertEquals(DataCoding.Group.MESSAGE_WAITING_INDICATION, dc.getCodingGroup()); Assert.assertEquals(DataCoding.MESSAGE_CLASS_0, dc.getMessageClass()); Assert.assertEquals(false, dc.isCompressed()); // 0xFD = 1111 11 01 -> should be UCS2 /** NOTE: 0xFD is not a valid DCS value dc = DataCoding.parse((byte)0xFD); Assert.assertEquals((byte)0xFD, dc.getByteValue()); Assert.assertEquals(DataCoding.CHAR_ENC_UCS2, dc.getCharacterEncoding()); Assert.assertEquals(DataCoding.Group.MESSAGE_CLASS, dc.getCodingGroup()); Assert.assertEquals(DataCoding.MESSAGE_CLASS_1, dc.getMessageClass()); Assert.assertEquals(false, dc.isCompressed()); */ } }