blob: 48f3f0290a58ec8d924c0460bde175f6023764ac [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2011 - 2012 ACIN, nxtControl, 2018 TU Vienna/ACIN
* 2020 Johannes Kepler University Linz
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0.
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Martin Melik Merkumians, Ingo Hegny, Alois Zoitl, Stanislav Meduna - initial API and implementation and/or initial documentation
* Ernst Blecha - Adds partial access tests
*******************************************************************************/
#include <boost/test/unit_test.hpp>
/*#ifdef FORTE_USE_REAL_DATATYPE
#include <boost/test/floating_point_comparison.hpp>
#include "../../../src/core/datatypes/forte_real.h"
#endif //FORTE_USE_REAL_DATATYPE*/
//BOOLEAN
#include "../../../src/core/datatypes/forte_bool.h"
//BIT-Datatypes
#include "../../../src/core/datatypes/forte_byte.h"
#include "../../../src/core/datatypes/forte_word.h"
#include "../../../src/core/datatypes/forte_dword.h"
#include "CIEC_PARTIAL_test.h"
using namespace boost::unit_test;
BOOST_AUTO_TEST_SUITE(CIEC_ANY_BIT_PARTIAL)
BOOST_AUTO_TEST_SUITE(CIEC_ANY_BIT_PARTIAL_DWORD)
BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_INITVALUES_CHECK_BIT)
{
CIEC_DWORD nTestDWord;
test4X_0(nTestDWord,28);
test4X_0(nTestDWord,24);
test4X_0(nTestDWord,20);
test4X_0(nTestDWord,16);
test4X_0(nTestDWord,12);
test4X_0(nTestDWord,8);
test4X_0(nTestDWord,4);
test4X_0(nTestDWord,0);
}
BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_INITVALUES_CHECK_BYTE)
{
CIEC_DWORD nTestDWord;
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,0>()),0);
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,1>()),0);
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,2>()),0);
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,3>()),0);
}
BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_INITVALUES_CHECK_WORD)
{
CIEC_DWORD nTestDWord;
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_WORD,0>()),0);
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_WORD,1>()),0);
}
BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_INITVALUES_CHECK_DWORD)
{
CIEC_DWORD nTestDWord;
BOOST_CHECK_EQUAL(nTestDWord,0);
}
BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_CONST_INIT)
{
const CIEC_WORD nTestWord(0x42);
CIEC_DWORD mTestDWord;
mTestDWord.partial<CIEC_WORD,0>() = nTestWord;
BOOST_CHECK_EQUAL(mTestDWord, 0x42);
}
BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_VALUE_CHECK_BIT)
{
CIEC_DWORD nTestDWord;
nTestDWord=0xCAFEBABE;
test4X_C(nTestDWord,28)
test4X_A(nTestDWord,24)
test4X_F(nTestDWord,20)
test4X_E(nTestDWord,16)
test4X_B(nTestDWord,12)
test4X_A(nTestDWord,8)
test4X_B(nTestDWord,4)
test4X_E(nTestDWord,0)
}
BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_VALUE_CHECK_BYTE)
{
CIEC_DWORD nTestDWord;
nTestDWord=0xCAFEBABE;
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,0>()), 0xBE);
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,1>()), 0xBA);
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,2>()), 0xFE);
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,3>()), 0xCA);
}
BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_VALUE_CHECK_WORD)
{
CIEC_DWORD nTestDWord;
nTestDWord=0xCAFEBABE;
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_WORD,0>()), 0xBABE);
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_WORD,1>()), 0xCAFE);
}
BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_VALUE_CHECK_DWORD)
{
CIEC_DWORD nTestDWord;
nTestDWord=0xCAFEBABE;
BOOST_CHECK_EQUAL(nTestDWord, 0xCAFEBABE);
}
BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_ASSIGN)
{
CIEC_DWORD nTestDWord;
set4X_B(nTestDWord,28);
set4X_A(nTestDWord,24);
set4X_A(nTestDWord,20);
set4X_D(nTestDWord,16);
set4X_F(nTestDWord,12);
set4X_0(nTestDWord,8);
set4X_0(nTestDWord,4);
set4X_D(nTestDWord,0);
test4X_B(nTestDWord,28);
test4X_A(nTestDWord,24);
test4X_A(nTestDWord,20);
test4X_D(nTestDWord,16);
test4X_F(nTestDWord,12);
test4X_0(nTestDWord,8);
test4X_0(nTestDWord,4);
test4X_D(nTestDWord,0);
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,3>()), 0xBAU);
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,2>()), 0xADU);
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,1>()), 0xF0U);
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,0>()), 0x0DU);
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_WORD,1>()), 0xBAADU);
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_WORD,0>()), 0xF00DU);
BOOST_CHECK_EQUAL(nTestDWord, 0xBAADF00DU);
nTestDWord.partial<CIEC_BYTE,3>() = 0xBA;
nTestDWord.partial<CIEC_BYTE,2>() = 0xD0;
nTestDWord.partial<CIEC_BYTE,1>() = 0xCA;
nTestDWord.partial<CIEC_BYTE,0>() = 0xFE;
test4X_B(nTestDWord,28);
test4X_A(nTestDWord,24);
test4X_D(nTestDWord,20);
test4X_0(nTestDWord,16);
test4X_C(nTestDWord,12);
test4X_A(nTestDWord,8);
test4X_F(nTestDWord,4);
test4X_E(nTestDWord,0);
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,3>()), 0xBAU);
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,2>()), 0xD0U);
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,1>()), 0xCAU);
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,0>()), 0xFEU);
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_WORD,1>()), 0xBAD0U);
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_WORD,0>()), 0xCAFEU);
BOOST_CHECK_EQUAL(nTestDWord, 0xBAD0CAFEU);
nTestDWord.partial<CIEC_WORD,1>() = 0xCEC0;
nTestDWord.partial<CIEC_WORD,0>() = 0xFFEE;
test4X_C(nTestDWord,28);
test4X_E(nTestDWord,24);
test4X_C(nTestDWord,20);
test4X_0(nTestDWord,16);
test4X_F(nTestDWord,12);
test4X_F(nTestDWord,8);
test4X_E(nTestDWord,4);
test4X_E(nTestDWord,0);
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,3>()), 0xCEU);
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,2>()), 0xC0U);
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,1>()), 0xFFU);
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,0>()), 0xEEU);
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_WORD,1>()), 0xCEC0U);
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_WORD,0>()), 0xFFEEU);
BOOST_CHECK_EQUAL(nTestDWord, 0xCEC0FFEEU);
nTestDWord = 0xADD511FE;
test4X_A(nTestDWord,28);
test4X_D(nTestDWord,24);
test4X_D(nTestDWord,20);
test4X_5(nTestDWord,16);
test4X_1(nTestDWord,12);
test4X_1(nTestDWord,8);
test4X_F(nTestDWord,4);
test4X_E(nTestDWord,0);
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,3>()), 0xADU);
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,2>()), 0xD5U);
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,1>()), 0x11U);
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,0>()), 0xFEU);
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_WORD,1>()), 0xADD5U);
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_WORD,0>()), 0x11FEU);
BOOST_CHECK_EQUAL(nTestDWord, 0xADD511FEU);
}
BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_ASSIGN_CHAIN_SET_BIT_CHECK_BIT)
{
CIEC_DWORD nTestDWord;
set4X_B(nTestDWord,28);
set4X_A(nTestDWord,24);
set4X_A(nTestDWord,20);
set4X_D(nTestDWord,16);
set4X_F(nTestDWord,12);
set4X_0(nTestDWord,8);
set4X_0(nTestDWord,4);
set4X_D(nTestDWord,0);
test4X_B(nTestDWord,28);
test4X_A(nTestDWord,24);
test4X_A(nTestDWord,20);
test4X_D(nTestDWord,16);
test4X_F(nTestDWord,12);
test4X_0(nTestDWord,8);
test4X_0(nTestDWord,4);
test4X_D(nTestDWord,0);
}
BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_ASSIGN_CHAIN_SET_BIT_CHECK_BYTE)
{
CIEC_DWORD nTestDWord;
set4X_B(nTestDWord,28);
set4X_A(nTestDWord,24);
set4X_A(nTestDWord,20);
set4X_D(nTestDWord,16);
set4X_F(nTestDWord,12);
set4X_0(nTestDWord,8);
set4X_0(nTestDWord,4);
set4X_D(nTestDWord,0);
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,3>()), 0xBAU);
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,2>()), 0xADU);
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,1>()), 0xF0U);
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,0>()), 0x0DU);
}
BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_ASSIGN_CHAIN_SET_BIT_CHECK_WORD)
{
CIEC_DWORD nTestDWord;
set4X_B(nTestDWord,28);
set4X_A(nTestDWord,24);
set4X_A(nTestDWord,20);
set4X_D(nTestDWord,16);
set4X_F(nTestDWord,12);
set4X_0(nTestDWord,8);
set4X_0(nTestDWord,4);
set4X_D(nTestDWord,0);
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_WORD,1>()), 0xBAADU);
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_WORD,0>()), 0xF00DU);
}
BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_ASSIGN_CHAIN_SET_BIT_CHECK_DWORD)
{
CIEC_DWORD nTestDWord;
set4X_B(nTestDWord,28);
set4X_A(nTestDWord,24);
set4X_A(nTestDWord,20);
set4X_D(nTestDWord,16);
set4X_F(nTestDWord,12);
set4X_0(nTestDWord,8);
set4X_0(nTestDWord,4);
set4X_D(nTestDWord,0);
BOOST_CHECK_EQUAL(nTestDWord, 0xBAADF00DU);
}
BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_CHANGE_CHAIN_SET_BYTE_CHECK_BIT)
{
CIEC_DWORD nTestDWord;
set4X_B(nTestDWord,28);
set4X_A(nTestDWord,24);
set4X_A(nTestDWord,20);
set4X_D(nTestDWord,16);
set4X_F(nTestDWord,12);
set4X_0(nTestDWord,8);
set4X_0(nTestDWord,4);
set4X_D(nTestDWord,0);
nTestDWord.partial<CIEC_BYTE,3>() = 0xBA;
nTestDWord.partial<CIEC_BYTE,2>() = 0xD0;
nTestDWord.partial<CIEC_BYTE,1>() = 0xCA;
nTestDWord.partial<CIEC_BYTE,0>() = 0xFE;
test4X_B(nTestDWord,28);
test4X_A(nTestDWord,24);
test4X_D(nTestDWord,20);
test4X_0(nTestDWord,16);
test4X_C(nTestDWord,12);
test4X_A(nTestDWord,8);
test4X_F(nTestDWord,4);
test4X_E(nTestDWord,0);
}
BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_CHANGE_CHAIN_SET_BYTE_CHECK_BYTE)
{
CIEC_DWORD nTestDWord;
set4X_B(nTestDWord,28);
set4X_A(nTestDWord,24);
set4X_A(nTestDWord,20);
set4X_D(nTestDWord,16);
set4X_F(nTestDWord,12);
set4X_0(nTestDWord,8);
set4X_0(nTestDWord,4);
set4X_D(nTestDWord,0);
nTestDWord.partial<CIEC_BYTE,3>() = 0xBA;
nTestDWord.partial<CIEC_BYTE,2>() = 0xD0;
nTestDWord.partial<CIEC_BYTE,1>() = 0xCA;
nTestDWord.partial<CIEC_BYTE,0>() = 0xFE;
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,3>()), 0xBAU);
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,2>()), 0xD0U);
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,1>()), 0xCAU);
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,0>()), 0xFEU);
}
BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_CHANGE_CHAIN_SET_BYTE_CHECK_WORD)
{
CIEC_DWORD nTestDWord;
set4X_B(nTestDWord,28);
set4X_A(nTestDWord,24);
set4X_A(nTestDWord,20);
set4X_D(nTestDWord,16);
set4X_F(nTestDWord,12);
set4X_0(nTestDWord,8);
set4X_0(nTestDWord,4);
set4X_D(nTestDWord,0);
nTestDWord.partial<CIEC_BYTE,3>() = 0xBA;
nTestDWord.partial<CIEC_BYTE,2>() = 0xD0;
nTestDWord.partial<CIEC_BYTE,1>() = 0xCA;
nTestDWord.partial<CIEC_BYTE,0>() = 0xFE;
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_WORD,1>()), 0xBAD0U);
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_WORD,0>()), 0xCAFEU);
}
BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_CHANGE_CHAIN_SET_BYTE_CHECK_DWORD)
{
CIEC_DWORD nTestDWord;
set4X_B(nTestDWord,28);
set4X_A(nTestDWord,24);
set4X_A(nTestDWord,20);
set4X_D(nTestDWord,16);
set4X_F(nTestDWord,12);
set4X_0(nTestDWord,8);
set4X_0(nTestDWord,4);
set4X_D(nTestDWord,0);
nTestDWord.partial<CIEC_BYTE,3>() = 0xBA;
nTestDWord.partial<CIEC_BYTE,2>() = 0xD0;
nTestDWord.partial<CIEC_BYTE,1>() = 0xCA;
nTestDWord.partial<CIEC_BYTE,0>() = 0xFE;
BOOST_CHECK_EQUAL(nTestDWord, 0xBAD0CAFEU);
}
BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_CHANGE_CHAIN_SET_WORD_CHECK_BIT)
{
CIEC_DWORD nTestDWord;
set4X_B(nTestDWord,28);
set4X_A(nTestDWord,24);
set4X_A(nTestDWord,20);
set4X_D(nTestDWord,16);
set4X_F(nTestDWord,12);
set4X_0(nTestDWord,8);
set4X_0(nTestDWord,4);
set4X_D(nTestDWord,0);
nTestDWord.partial<CIEC_BYTE,3>() = 0xBA;
nTestDWord.partial<CIEC_BYTE,2>() = 0xD0;
nTestDWord.partial<CIEC_BYTE,1>() = 0xCA;
nTestDWord.partial<CIEC_BYTE,0>() = 0xFE;
nTestDWord.partial<CIEC_WORD,1>() = 0xCEC0;
nTestDWord.partial<CIEC_WORD,0>() = 0xFFEE;
test4X_C(nTestDWord,28);
test4X_E(nTestDWord,24);
test4X_C(nTestDWord,20);
test4X_0(nTestDWord,16);
test4X_F(nTestDWord,12);
test4X_F(nTestDWord,8);
test4X_E(nTestDWord,4);
test4X_E(nTestDWord,0);
}
BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_CHANGE_CHAIN_SET_WORD_CHECK_BYTE)
{
CIEC_DWORD nTestDWord;
set4X_B(nTestDWord,28);
set4X_A(nTestDWord,24);
set4X_A(nTestDWord,20);
set4X_D(nTestDWord,16);
set4X_F(nTestDWord,12);
set4X_0(nTestDWord,8);
set4X_0(nTestDWord,4);
set4X_D(nTestDWord,0);
nTestDWord.partial<CIEC_BYTE,3>() = 0xBA;
nTestDWord.partial<CIEC_BYTE,2>() = 0xD0;
nTestDWord.partial<CIEC_BYTE,1>() = 0xCA;
nTestDWord.partial<CIEC_BYTE,0>() = 0xFE;
nTestDWord.partial<CIEC_WORD,1>() = 0xCEC0;
nTestDWord.partial<CIEC_WORD,0>() = 0xFFEE;
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,3>()), 0xCEU);
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,2>()), 0xC0U);
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,1>()), 0xFFU);
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,0>()), 0xEEU);
}
BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_CHANGE_CHAIN_SET_WORD_CHECK_WORD)
{
CIEC_DWORD nTestDWord;
set4X_B(nTestDWord,28);
set4X_A(nTestDWord,24);
set4X_A(nTestDWord,20);
set4X_D(nTestDWord,16);
set4X_F(nTestDWord,12);
set4X_0(nTestDWord,8);
set4X_0(nTestDWord,4);
set4X_D(nTestDWord,0);
nTestDWord.partial<CIEC_BYTE,3>() = 0xBA;
nTestDWord.partial<CIEC_BYTE,2>() = 0xD0;
nTestDWord.partial<CIEC_BYTE,1>() = 0xCA;
nTestDWord.partial<CIEC_BYTE,0>() = 0xFE;
nTestDWord.partial<CIEC_WORD,1>() = 0xCEC0;
nTestDWord.partial<CIEC_WORD,0>() = 0xFFEE;
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_WORD,1>()), 0xCEC0U);
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_WORD,0>()), 0xFFEEU);
}
BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_CHANGE_CHAIN_SET_WORD_CHECK_DWORD)
{
CIEC_DWORD nTestDWord;
set4X_B(nTestDWord,28);
set4X_A(nTestDWord,24);
set4X_A(nTestDWord,20);
set4X_D(nTestDWord,16);
set4X_F(nTestDWord,12);
set4X_0(nTestDWord,8);
set4X_0(nTestDWord,4);
set4X_D(nTestDWord,0);
nTestDWord.partial<CIEC_BYTE,3>() = 0xBA;
nTestDWord.partial<CIEC_BYTE,2>() = 0xD0;
nTestDWord.partial<CIEC_BYTE,1>() = 0xCA;
nTestDWord.partial<CIEC_BYTE,0>() = 0xFE;
nTestDWord.partial<CIEC_WORD,1>() = 0xCEC0;
nTestDWord.partial<CIEC_WORD,0>() = 0xFFEE;
BOOST_CHECK_EQUAL(nTestDWord, 0xCEC0FFEEU);
}
BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_CHANGE_CHAIN_WORD_SET_BIT_CHECK_BIT)
{
CIEC_DWORD nTestDWord;
set4X_B(nTestDWord,28);
set4X_A(nTestDWord,24);
set4X_A(nTestDWord,20);
set4X_D(nTestDWord,16);
set4X_F(nTestDWord,12);
set4X_0(nTestDWord,8);
set4X_0(nTestDWord,4);
set4X_D(nTestDWord,0);
nTestDWord.partial<CIEC_BYTE,3>() = 0xBA;
nTestDWord.partial<CIEC_BYTE,2>() = 0xD0;
nTestDWord.partial<CIEC_BYTE,1>() = 0xCA;
nTestDWord.partial<CIEC_BYTE,0>() = 0xFE;
nTestDWord.partial<CIEC_WORD,1>() = 0xCEC0;
nTestDWord.partial<CIEC_WORD,0>() = 0xFFEE;
set4X_A((nTestDWord.partial<CIEC_WORD,1>()),12);
set4X_D((nTestDWord.partial<CIEC_WORD,1>()),8);
set4X_D((nTestDWord.partial<CIEC_WORD,1>()),4);
set4X_5((nTestDWord.partial<CIEC_WORD,1>()),0);
set4X_1((nTestDWord.partial<CIEC_WORD,0>()),12);
set4X_1((nTestDWord.partial<CIEC_WORD,0>()),8);
set4X_F((nTestDWord.partial<CIEC_WORD,0>()),4);
set4X_E((nTestDWord.partial<CIEC_WORD,0>()),0);
test4X_A(nTestDWord,28);
test4X_D(nTestDWord,24);
test4X_D(nTestDWord,20);
test4X_5(nTestDWord,16);
test4X_1(nTestDWord,12);
test4X_1(nTestDWord,8);
test4X_F(nTestDWord,4);
test4X_E(nTestDWord,0);
}
BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_CHANGE_CHAIN_WORD_SET_BIT_CHECK_BYTE)
{
CIEC_DWORD nTestDWord;
set4X_B(nTestDWord,28);
set4X_A(nTestDWord,24);
set4X_A(nTestDWord,20);
set4X_D(nTestDWord,16);
set4X_F(nTestDWord,12);
set4X_0(nTestDWord,8);
set4X_0(nTestDWord,4);
set4X_D(nTestDWord,0);
nTestDWord.partial<CIEC_BYTE,3>() = 0xBA;
nTestDWord.partial<CIEC_BYTE,2>() = 0xD0;
nTestDWord.partial<CIEC_BYTE,1>() = 0xCA;
nTestDWord.partial<CIEC_BYTE,0>() = 0xFE;
nTestDWord.partial<CIEC_WORD,1>() = 0xCEC0;
nTestDWord.partial<CIEC_WORD,0>() = 0xFFEE;
set4X_A((nTestDWord.partial<CIEC_WORD,1>()),12);
set4X_D((nTestDWord.partial<CIEC_WORD,1>()),8);
set4X_D((nTestDWord.partial<CIEC_WORD,1>()),4);
set4X_5((nTestDWord.partial<CIEC_WORD,1>()),0);
set4X_1((nTestDWord.partial<CIEC_WORD,0>()),12);
set4X_1((nTestDWord.partial<CIEC_WORD,0>()),8);
set4X_F((nTestDWord.partial<CIEC_WORD,0>()),4);
set4X_E((nTestDWord.partial<CIEC_WORD,0>()),0);
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,3>()), 0xADU);
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,2>()), 0xD5U);
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,1>()), 0x11U);
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,0>()), 0xFEU);
}
BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_CHANGE_CHAIN_WORD_SET_BIT_CHECK_WORD)
{
CIEC_DWORD nTestDWord;
set4X_B(nTestDWord,28);
set4X_A(nTestDWord,24);
set4X_A(nTestDWord,20);
set4X_D(nTestDWord,16);
set4X_F(nTestDWord,12);
set4X_0(nTestDWord,8);
set4X_0(nTestDWord,4);
set4X_D(nTestDWord,0);
nTestDWord.partial<CIEC_BYTE,3>() = 0xBA;
nTestDWord.partial<CIEC_BYTE,2>() = 0xD0;
nTestDWord.partial<CIEC_BYTE,1>() = 0xCA;
nTestDWord.partial<CIEC_BYTE,0>() = 0xFE;
nTestDWord.partial<CIEC_WORD,1>() = 0xCEC0;
nTestDWord.partial<CIEC_WORD,0>() = 0xFFEE;
set4X_A((nTestDWord.partial<CIEC_WORD,1>()),12);
set4X_D((nTestDWord.partial<CIEC_WORD,1>()),8);
set4X_D((nTestDWord.partial<CIEC_WORD,1>()),4);
set4X_5((nTestDWord.partial<CIEC_WORD,1>()),0);
set4X_1((nTestDWord.partial<CIEC_WORD,0>()),12);
set4X_1((nTestDWord.partial<CIEC_WORD,0>()),8);
set4X_F((nTestDWord.partial<CIEC_WORD,0>()),4);
set4X_E((nTestDWord.partial<CIEC_WORD,0>()),0);
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_WORD,1>()), 0xADD5U);
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_WORD,0>()), 0x11FEU);
}
BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_CHANGE_CHAIN_WORD_SET_BIT_CHECK_DWORD)
{
CIEC_DWORD nTestDWord;
nTestDWord.partial<CIEC_BYTE,3>() = 0xBA;
nTestDWord.partial<CIEC_BYTE,2>() = 0xD0;
nTestDWord.partial<CIEC_BYTE,1>() = 0xCA;
nTestDWord.partial<CIEC_BYTE,0>() = 0xFE;
nTestDWord.partial<CIEC_WORD,1>() = 0xCEC0;
nTestDWord.partial<CIEC_WORD,0>() = 0xFFEE;
set4X_A((nTestDWord.partial<CIEC_WORD,1>()),12);
set4X_D((nTestDWord.partial<CIEC_WORD,1>()),8);
set4X_D((nTestDWord.partial<CIEC_WORD,1>()),4);
set4X_5((nTestDWord.partial<CIEC_WORD,1>()),0);
set4X_1((nTestDWord.partial<CIEC_WORD,0>()),12);
set4X_1((nTestDWord.partial<CIEC_WORD,0>()),8);
set4X_F((nTestDWord.partial<CIEC_WORD,0>()),4);
set4X_E((nTestDWord.partial<CIEC_WORD,0>()),0);
BOOST_CHECK_EQUAL(nTestDWord, 0xADD511FEU);
}
BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_CHANGE_CHAIN_WORD_BYTE_SET_BIT_CHECK_BIT)
{
CIEC_DWORD nTestDWord;
set4X_C((nTestDWord.partial<CIEC_WORD,1>().partial<CIEC_BYTE,1>()),4);
set4X_E((nTestDWord.partial<CIEC_WORD,1>().partial<CIEC_BYTE,1>()),0);
set4X_C((nTestDWord.partial<CIEC_WORD,1>().partial<CIEC_BYTE,0>()),4);
set4X_0((nTestDWord.partial<CIEC_WORD,1>().partial<CIEC_BYTE,0>()),0);
set4X_F((nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,1>()),4);
set4X_F((nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,1>()),0);
set4X_E((nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,0>()),4);
set4X_E((nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,0>()),0);
test4X_C(nTestDWord,28);
test4X_E(nTestDWord,24);
test4X_C(nTestDWord,20);
test4X_0(nTestDWord,16);
test4X_F(nTestDWord,12);
test4X_F(nTestDWord,8);
test4X_E(nTestDWord,4);
test4X_E(nTestDWord,0);
}
BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_CHANGE_CHAIN_WORD_BYTE_SET_BIT_CHECK_WORD_BIT)
{
CIEC_DWORD nTestDWord;
set4X_C((nTestDWord.partial<CIEC_WORD,1>().partial<CIEC_BYTE,1>()),4);
set4X_E((nTestDWord.partial<CIEC_WORD,1>().partial<CIEC_BYTE,1>()),0);
set4X_C((nTestDWord.partial<CIEC_WORD,1>().partial<CIEC_BYTE,0>()),4);
set4X_0((nTestDWord.partial<CIEC_WORD,1>().partial<CIEC_BYTE,0>()),0);
set4X_F((nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,1>()),4);
set4X_F((nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,1>()),0);
set4X_E((nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,0>()),4);
set4X_E((nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,0>()),0);
test4X_C((nTestDWord.partial<CIEC_WORD,1>()),12);
test4X_E((nTestDWord.partial<CIEC_WORD,1>()),8);
test4X_C((nTestDWord.partial<CIEC_WORD,1>()),4);
test4X_0((nTestDWord.partial<CIEC_WORD,1>()),0);
test4X_F((nTestDWord.partial<CIEC_WORD,0>()),12);
test4X_F((nTestDWord.partial<CIEC_WORD,0>()),8);
test4X_E((nTestDWord.partial<CIEC_WORD,0>()),4);
test4X_E((nTestDWord.partial<CIEC_WORD,0>()),0);
}
BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_CHANGE_CHAIN_WORD_BYTE_SET_BIT_CHECK_WORD_BYTE_BIT)
{
CIEC_DWORD nTestDWord;
set4X_C((nTestDWord.partial<CIEC_WORD,1>().partial<CIEC_BYTE,1>()),4);
set4X_E((nTestDWord.partial<CIEC_WORD,1>().partial<CIEC_BYTE,1>()),0);
set4X_C((nTestDWord.partial<CIEC_WORD,1>().partial<CIEC_BYTE,0>()),4);
set4X_0((nTestDWord.partial<CIEC_WORD,1>().partial<CIEC_BYTE,0>()),0);
set4X_F((nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,1>()),4);
set4X_F((nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,1>()),0);
set4X_E((nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,0>()),4);
set4X_E((nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,0>()),0);
test4X_C((nTestDWord.partial<CIEC_WORD,1>().partial<CIEC_BYTE,1>()),4);
test4X_E((nTestDWord.partial<CIEC_WORD,1>().partial<CIEC_BYTE,1>()),0);
test4X_C((nTestDWord.partial<CIEC_WORD,1>().partial<CIEC_BYTE,0>()),4);
test4X_0((nTestDWord.partial<CIEC_WORD,1>().partial<CIEC_BYTE,0>()),0);
test4X_F((nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,1>()),4);
test4X_F((nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,1>()),0);
test4X_E((nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,0>()),4);
test4X_E((nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,0>()),0);
}
BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_CHANGE_CHAIN_WORD_BYTE_SET_BIT_CHECK_WORD_BYTE)
{
CIEC_DWORD nTestDWord;
set4X_C((nTestDWord.partial<CIEC_WORD,1>().partial<CIEC_BYTE,1>()),4);
set4X_E((nTestDWord.partial<CIEC_WORD,1>().partial<CIEC_BYTE,1>()),0);
set4X_C((nTestDWord.partial<CIEC_WORD,1>().partial<CIEC_BYTE,0>()),4);
set4X_0((nTestDWord.partial<CIEC_WORD,1>().partial<CIEC_BYTE,0>()),0);
set4X_F((nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,1>()),4);
set4X_F((nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,1>()),0);
set4X_E((nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,0>()),4);
set4X_E((nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,0>()),0);
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_WORD,1>().partial<CIEC_BYTE,1>()), 0xCEU);
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_WORD,1>().partial<CIEC_BYTE,0>()), 0xC0U);
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,1>()), 0xFFU);
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,0>()), 0xEEU);
}
BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_CHANGE_CHAIN_WORD_BYTE_SET_BIT_CHECK_BYTE)
{
CIEC_DWORD nTestDWord;
set4X_C((nTestDWord.partial<CIEC_WORD,1>().partial<CIEC_BYTE,1>()),4);
set4X_E((nTestDWord.partial<CIEC_WORD,1>().partial<CIEC_BYTE,1>()),0);
set4X_C((nTestDWord.partial<CIEC_WORD,1>().partial<CIEC_BYTE,0>()),4);
set4X_0((nTestDWord.partial<CIEC_WORD,1>().partial<CIEC_BYTE,0>()),0);
set4X_F((nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,1>()),4);
set4X_F((nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,1>()),0);
set4X_E((nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,0>()),4);
set4X_E((nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,0>()),0);
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,3>()), 0xCEU);
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,2>()), 0xC0U);
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,1>()), 0xFFU);
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,0>()), 0xEEU);
}
BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_CHANGE_CHAIN_WORD_BYTE_SET_BIT_CHECK_WORD)
{
CIEC_DWORD nTestDWord;
set4X_A((nTestDWord.partial<CIEC_WORD,1>()),12);
set4X_D((nTestDWord.partial<CIEC_WORD,1>()),8);
set4X_D((nTestDWord.partial<CIEC_WORD,1>()),4);
set4X_5((nTestDWord.partial<CIEC_WORD,1>()),0);
set4X_1((nTestDWord.partial<CIEC_WORD,0>()),12);
set4X_1((nTestDWord.partial<CIEC_WORD,0>()),8);
set4X_F((nTestDWord.partial<CIEC_WORD,0>()),4);
set4X_E((nTestDWord.partial<CIEC_WORD,0>()),0);
set4X_C((nTestDWord.partial<CIEC_WORD,1>().partial<CIEC_BYTE,1>()),4);
set4X_E((nTestDWord.partial<CIEC_WORD,1>().partial<CIEC_BYTE,1>()),0);
set4X_C((nTestDWord.partial<CIEC_WORD,1>().partial<CIEC_BYTE,0>()),4);
set4X_0((nTestDWord.partial<CIEC_WORD,1>().partial<CIEC_BYTE,0>()),0);
set4X_F((nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,1>()),4);
set4X_F((nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,1>()),0);
set4X_E((nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,0>()),4);
set4X_E((nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,0>()),0);
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_WORD,1>()), 0xCEC0U);
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_WORD,0>()), 0xFFEEU);
}
BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_CHANGE_CHAIN_WORD_BYTE_SET_BIT_CHECK_DWORD)
{
CIEC_DWORD nTestDWord;
set4X_A((nTestDWord.partial<CIEC_WORD,1>()),12);
set4X_D((nTestDWord.partial<CIEC_WORD,1>()),8);
set4X_D((nTestDWord.partial<CIEC_WORD,1>()),4);
set4X_5((nTestDWord.partial<CIEC_WORD,1>()),0);
set4X_1((nTestDWord.partial<CIEC_WORD,0>()),12);
set4X_1((nTestDWord.partial<CIEC_WORD,0>()),8);
set4X_F((nTestDWord.partial<CIEC_WORD,0>()),4);
set4X_E((nTestDWord.partial<CIEC_WORD,0>()),0);
set4X_C((nTestDWord.partial<CIEC_WORD,1>().partial<CIEC_BYTE,1>()),4);
set4X_E((nTestDWord.partial<CIEC_WORD,1>().partial<CIEC_BYTE,1>()),0);
set4X_C((nTestDWord.partial<CIEC_WORD,1>().partial<CIEC_BYTE,0>()),4);
set4X_0((nTestDWord.partial<CIEC_WORD,1>().partial<CIEC_BYTE,0>()),0);
set4X_F((nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,1>()),4);
set4X_F((nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,1>()),0);
set4X_E((nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,0>()),4);
set4X_E((nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,0>()),0);
BOOST_CHECK_EQUAL(nTestDWord, 0xCEC0FFEEU);
}
BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_SET_VALUE_WORD_A_CHECK_WORD)
{
CIEC_DWORD nTestDWord;
CIEC_WORD nTestWord;
nTestWord = 0xCAFE;
nTestDWord.partial<CIEC_WORD,0>().setValue(nTestWord);
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_WORD,1>()), 0x0000);
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_WORD,0>()), 0xCAFE);
}
BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_SET_VALUE_WORD_A_CHECK_DWORD)
{
CIEC_DWORD nTestDWord;
CIEC_WORD nTestWord;
nTestWord = 0xCAFE;
nTestDWord.partial<CIEC_WORD,0>().setValue(nTestWord);
BOOST_CHECK_EQUAL(nTestDWord, 0x0000CAFE);
}
BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_SET_VALUE_WORD_B_CHECK_WORD)
{
CIEC_DWORD nTestDWord;
CIEC_WORD nTestWord;
nTestWord = 0xCAFE;
nTestDWord.partial<CIEC_WORD,0>().setValue(nTestWord);
nTestWord = 0xBAD0;
nTestDWord.partial<CIEC_WORD,1>().setValue(nTestWord);
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_WORD,1>()), 0xBAD0);
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_WORD,0>()), 0xCAFE);
}
BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_SET_VALUE_WORD_B_CHECK_DWORD)
{
CIEC_DWORD nTestDWord;
CIEC_WORD nTestWord;
nTestWord = 0xCAFE;
nTestDWord.partial<CIEC_WORD,0>().setValue(nTestWord);
nTestWord = 0xBAD0;
nTestDWord.partial<CIEC_WORD,1>().setValue(nTestWord);
BOOST_CHECK_EQUAL(nTestDWord, 0xBAD0CAFE);
}
BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_SET_VALUE_BYTE_CHECK_BYTE)
{
CIEC_DWORD nTestDWord;
CIEC_WORD nTestWord;
CIEC_BYTE nTestByte;
nTestWord = 0xCAFE;
nTestDWord.partial<CIEC_WORD,0>().setValue(nTestWord);
nTestWord = 0xBAD0;
nTestDWord.partial<CIEC_WORD,1>().setValue(nTestWord);
nTestByte = 0x0B;
nTestDWord.partial<CIEC_BYTE,1>().setValue(nTestByte);
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,3>()), 0xBA);
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,2>()), 0xD0);
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,1>()), 0x0B);
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,0>()), 0xFE);
}
BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_SET_VALUE_BYTE_CHECK_WORD)
{
CIEC_DWORD nTestDWord;
CIEC_WORD nTestWord;
CIEC_BYTE nTestByte;
nTestWord = 0xCAFE;
nTestDWord.partial<CIEC_WORD,0>().setValue(nTestWord);
nTestWord = 0xBAD0;
nTestDWord.partial<CIEC_WORD,1>().setValue(nTestWord);
nTestByte = 0x0B;
nTestDWord.partial<CIEC_BYTE,1>().setValue(nTestByte);
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_WORD,1>()), 0xBAD0);
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_WORD,0>()), 0x0BFE);
}
BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_SET_VALUE_BYTE_CHECK_DWORD)
{
CIEC_DWORD nTestDWord;
CIEC_WORD nTestWord;
CIEC_BYTE nTestByte;
nTestWord = 0xCAFE;
nTestDWord.partial<CIEC_WORD,0>().setValue(nTestWord);
nTestWord = 0xBAD0;
nTestDWord.partial<CIEC_WORD,1>().setValue(nTestWord);
nTestByte = 0x0B;
nTestDWord.partial<CIEC_BYTE,1>().setValue(nTestByte);
BOOST_CHECK_EQUAL(nTestDWord, 0xBAD00BFE);
}
BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_SET_VALUE_WORD_BYTE_CHECK_BYTE)
{
CIEC_DWORD nTestDWord;
CIEC_WORD nTestWord;
CIEC_BYTE nTestByte;
nTestWord = 0xCAFE;
nTestDWord.partial<CIEC_WORD,0>().setValue(nTestWord);
nTestWord = 0xBAD0;
nTestDWord.partial<CIEC_WORD,1>().setValue(nTestWord);
nTestByte = 0x0B;
nTestDWord.partial<CIEC_BYTE,1>().setValue(nTestByte);
nTestByte = 0xAD;
nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,0>().setValue(nTestByte);
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,0>()), 0xAD);
}
BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_SET_VALUE_WORD_BYTE_CHECK_WORD)
{
CIEC_DWORD nTestDWord;
CIEC_WORD nTestWord;
CIEC_BYTE nTestByte;
nTestWord = 0xCAFE;
nTestDWord.partial<CIEC_WORD,0>().setValue(nTestWord);
nTestWord = 0xBAD0;
nTestDWord.partial<CIEC_WORD,1>().setValue(nTestWord);
nTestByte = 0x0B;
nTestDWord.partial<CIEC_BYTE,1>().setValue(nTestByte);
nTestByte = 0xAD;
nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,0>().setValue(nTestByte);
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_WORD,0>()), 0x0BAD);
}
BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_SET_VALUE_WORD_BYTE_CHECK_DWORD)
{
CIEC_DWORD nTestDWord;
CIEC_WORD nTestWord;
CIEC_BYTE nTestByte;
nTestWord = 0xCAFE;
nTestDWord.partial<CIEC_WORD,0>().setValue(nTestWord);
nTestWord = 0xBAD0;
nTestDWord.partial<CIEC_WORD,1>().setValue(nTestWord);
nTestByte = 0x0B;
nTestDWord.partial<CIEC_BYTE,1>().setValue(nTestByte);
nTestByte = 0xAD;
nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,0>().setValue(nTestByte);
BOOST_CHECK_EQUAL(nTestDWord, 0xBAD00BAD);
}
BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_SET_VALUE_WORD_BYTE_BIT_CHECK_BIT_A)
{
CIEC_DWORD nTestDWord;
CIEC_WORD nTestWord;
CIEC_BYTE nTestByte;
CIEC_BOOL nTestBool;
nTestWord = 0xCAFE;
nTestDWord.partial<CIEC_WORD,0>().setValue(nTestWord);
nTestWord = 0xBAD0;
nTestDWord.partial<CIEC_WORD,1>().setValue(nTestWord);
nTestByte = 0x0B;
nTestDWord.partial<CIEC_BYTE,1>().setValue(nTestByte);
nTestByte = 0xAD;
nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,0>().setValue(nTestByte);
nTestBool = false;
nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,0>().partial<CIEC_BOOL,0>().setValue(nTestBool);
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BOOL,0>()), false);
}
BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_SET_VALUE_WORD_BYTE_BIT_CHECK_BYTE_A)
{
CIEC_DWORD nTestDWord;
CIEC_WORD nTestWord;
CIEC_BYTE nTestByte;
CIEC_BOOL nTestBool;
nTestWord = 0xCAFE;
nTestDWord.partial<CIEC_WORD,0>().setValue(nTestWord);
nTestWord = 0xBAD0;
nTestDWord.partial<CIEC_WORD,1>().setValue(nTestWord);
nTestByte = 0x0B;
nTestDWord.partial<CIEC_BYTE,1>().setValue(nTestByte);
nTestByte = 0xAD;
nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,0>().setValue(nTestByte);
nTestBool = false;
nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,0>().partial<CIEC_BOOL,0>().setValue(nTestBool);
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,0>()), 0xAC);
}
BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_SET_VALUE_WORD_BYTE_BIT_CHECK_WORD_A)
{
CIEC_DWORD nTestDWord;
CIEC_WORD nTestWord;
CIEC_BYTE nTestByte;
CIEC_BOOL nTestBool;
nTestWord = 0xCAFE;
nTestDWord.partial<CIEC_WORD,0>().setValue(nTestWord);
nTestWord = 0xBAD0;
nTestDWord.partial<CIEC_WORD,1>().setValue(nTestWord);
nTestByte = 0x0B;
nTestDWord.partial<CIEC_BYTE,1>().setValue(nTestByte);
nTestByte = 0xAD;
nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,0>().setValue(nTestByte);
nTestBool = false;
nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,0>().partial<CIEC_BOOL,0>().setValue(nTestBool);
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_WORD,0>()), 0x0BAC);
}
BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_SET_VALUE_WORD_BYTE_BIT_CHECK_DWORD_A)
{
CIEC_DWORD nTestDWord;
CIEC_WORD nTestWord;
CIEC_BYTE nTestByte;
CIEC_BOOL nTestBool;
nTestWord = 0xCAFE;
nTestDWord.partial<CIEC_WORD,0>().setValue(nTestWord);
nTestWord = 0xBAD0;
nTestDWord.partial<CIEC_WORD,1>().setValue(nTestWord);
nTestByte = 0x0B;
nTestDWord.partial<CIEC_BYTE,1>().setValue(nTestByte);
nTestByte = 0xAD;
nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,0>().setValue(nTestByte);
nTestBool = false;
nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,0>().partial<CIEC_BOOL,0>().setValue(nTestBool);
BOOST_CHECK_EQUAL(nTestDWord, 0xBAD00BAC);
}
BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_SET_VALUE_WORD_BYTE_BIT_CHECK_BIT_B)
{
CIEC_DWORD nTestDWord;
CIEC_WORD nTestWord;
CIEC_BYTE nTestByte;
CIEC_BOOL nTestBool;
nTestWord = 0xCAFE;
nTestDWord.partial<CIEC_WORD,0>().setValue(nTestWord);
nTestWord = 0xBAD0;
nTestDWord.partial<CIEC_WORD,1>().setValue(nTestWord);
nTestByte = 0x0B;
nTestDWord.partial<CIEC_BYTE,1>().setValue(nTestByte);
nTestByte = 0xAD;
nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,0>().setValue(nTestByte);
nTestBool = false;
nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,0>().partial<CIEC_BOOL,0>().setValue(nTestBool);
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BOOL,0>()), false);
}
BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_SET_VALUE_WORD_BYTE_BIT_CHECK_BYTE_B)
{
CIEC_DWORD nTestDWord;
CIEC_WORD nTestWord;
CIEC_BYTE nTestByte;
CIEC_BOOL nTestBool;
nTestWord = 0xCAFE;
nTestDWord.partial<CIEC_WORD,0>().setValue(nTestWord);
nTestWord = 0xBAD0;
nTestDWord.partial<CIEC_WORD,1>().setValue(nTestWord);
nTestByte = 0x0B;
nTestDWord.partial<CIEC_BYTE,1>().setValue(nTestByte);
nTestByte = 0xAD;
nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,0>().setValue(nTestByte);
nTestBool = false;
nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,0>().partial<CIEC_BOOL,0>().setValue(nTestBool);
nTestBool = true;
nTestDWord.partial<CIEC_WORD,1>().partial<CIEC_BYTE,0>().partial<CIEC_BOOL,5>().setValue(nTestBool);
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_BYTE,2>()), 0xF0);
}
BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_SET_VALUE_WORD_BYTE_BIT_CHECK_WORD_B)
{
CIEC_DWORD nTestDWord;
CIEC_WORD nTestWord;
CIEC_BYTE nTestByte;
CIEC_BOOL nTestBool;
nTestWord = 0xCAFE;
nTestDWord.partial<CIEC_WORD,0>().setValue(nTestWord);
nTestWord = 0xBAD0;
nTestDWord.partial<CIEC_WORD,1>().setValue(nTestWord);
nTestByte = 0x0B;
nTestDWord.partial<CIEC_BYTE,1>().setValue(nTestByte);
nTestByte = 0xAD;
nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,0>().setValue(nTestByte);
nTestBool = false;
nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,0>().partial<CIEC_BOOL,0>().setValue(nTestBool);
nTestBool = true;
nTestDWord.partial<CIEC_WORD,1>().partial<CIEC_BYTE,0>().partial<CIEC_BOOL,5>().setValue(nTestBool);
BOOST_CHECK_EQUAL((nTestDWord.partial<CIEC_WORD,1>()), 0xBAF0);
}
BOOST_AUTO_TEST_CASE(PARTIAL_ACCESS_DWORD_SET_VALUE_WORD_BYTE_BIT_CHECK_DWORD_B)
{
CIEC_DWORD nTestDWord;
CIEC_WORD nTestWord;
CIEC_BYTE nTestByte;
CIEC_BOOL nTestBool;
nTestWord = 0xCAFE;
nTestDWord.partial<CIEC_WORD,0>().setValue(nTestWord);
nTestWord = 0xBAD0;
nTestDWord.partial<CIEC_WORD,1>().setValue(nTestWord);
nTestByte = 0x0B;
nTestDWord.partial<CIEC_BYTE,1>().setValue(nTestByte);
nTestByte = 0xAD;
nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,0>().setValue(nTestByte);
nTestBool = false;
nTestDWord.partial<CIEC_WORD,0>().partial<CIEC_BYTE,0>().partial<CIEC_BOOL,0>().setValue(nTestBool);
nTestBool = true;
nTestDWord.partial<CIEC_WORD,1>().partial<CIEC_BYTE,0>().partial<CIEC_BOOL,5>().setValue(nTestBool);
BOOST_CHECK_EQUAL(nTestDWord, 0xBAF00BAC);
}
BOOST_AUTO_TEST_SUITE_END()
BOOST_AUTO_TEST_SUITE_END()