blob: da6b7e2121d7d3f3ee97524023642fa48030464f [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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.
*/
#include "DataOutputStreamTest.h"
using namespace std;
using namespace decaf;
using namespace decaf::lang;
using namespace decaf::io;
using namespace decaf::util;
void DataOutputStreamTest::test(){
unsigned char byteVal = (unsigned char)'T';
unsigned short shortVal = 5;
unsigned int intVal = 10000;
unsigned long long longVal = 1000000000;
float floatVal = 10.0f;
double doubleVal = 100.0;
unsigned char arrayVal[3] = {
'a', 'b', 'c'
};
// Create the stream with the buffer we just wrote to.
ByteArrayOutputStream myStream;
DataOutputStream writer( &myStream );
writer.writeByte( byteVal );
writer.writeShort( shortVal );
writer.writeInt( intVal );
writer.writeLong( longVal );
writer.writeFloat( floatVal );
writer.writeDouble( doubleVal );
writer.write( arrayVal, 3 );
const unsigned char* buffer = myStream.getByteArray();
int ix = 0;
unsigned char tempByte = buffer[ix];
CPPUNIT_ASSERT( tempByte == byteVal );
ix += sizeof( tempByte );
unsigned short tempShort = 0;
memcpy( &tempShort, buffer+ix, sizeof( unsigned short ) );
tempShort = util::Endian::byteSwap( tempShort );
CPPUNIT_ASSERT( tempShort == shortVal );
ix += sizeof( tempShort );
unsigned int tempInt = 0;
memcpy( &tempInt, buffer+ix, sizeof( unsigned int ) );
tempInt = util::Endian::byteSwap( tempInt );
CPPUNIT_ASSERT( tempInt == intVal );
ix += sizeof( tempInt );
unsigned long long tempLong = 0;
memcpy( &tempLong, buffer+ix, sizeof( unsigned long long ) );
tempLong = util::Endian::byteSwap( tempLong );
CPPUNIT_ASSERT( tempLong == longVal );
ix += sizeof( tempLong );
float tempFloat = 0;
memcpy( &tempFloat, buffer+ix, sizeof( float ) );
tempFloat = util::Endian::byteSwap( tempFloat );
CPPUNIT_ASSERT( tempFloat == floatVal );
ix += sizeof( tempFloat );
double tempDouble = 0;
memcpy( &tempDouble, buffer+ix, sizeof( double ) );
tempDouble = util::Endian::byteSwap( tempDouble );
CPPUNIT_ASSERT( tempDouble == doubleVal );
ix += sizeof( tempDouble );
}