일부 잘못된 비트 연산 사례를 발견했다. 어떤 것이 제대로 된 코드인지 확인하고자 UnitTest++로 단위 테스트 코드를 짜봤다.
/*
EPA_NONE = 0x00000000,
EPA_PRIMARY_KEY = 0x00000001,
EPA_DB_INDEXING = 0x00000002,
EPA_DB_SELECT = 0x00000004,// | EPA_DB_INDEXING,
EPA_DB_CLUSTERED = 0x00000008,
EPA_DB_AUTOINCREMENT = 0x00000010,
EPA_WRITE_THRUOGH = 0x00000020,
EPA_ALLOW_NULL = 0x00000040,
EPA_DB_UNIQUE_INDEX = 0x00000080,
EPA_INCREASE_VALUE = 0x00000100
*/
TEST(And)
{
DWORD flag = EPA_NONE;
CHECK( (EPA_NONE & EPA_NONE) == FALSE );
CHECK( (EPA_NONE & EPA_NONE == EPA_NONE) == FALSE );
CHECK( (EPA_NONE & EPA_NONE) == EPA_NONE ); // 성공
CHECK( (flag & EPA_NONE) == FALSE );
CHECK( (flag & EPA_NONE == EPA_NONE) == FALSE );
CHECK( (flag & EPA_NONE) == EPA_NONE ); // 성공
CHECK( (flag & EPA_PRIMARY_KEY == TRUE) == FALSE );
CHECK( (flag & EPA_PRIMARY_KEY == FALSE) == FALSE );
CHECK( (flag & EPA_PRIMARY_KEY) == FALSE );
flag = EPA_NONE | EPA_PRIMARY_KEY;
CHECK( !(flag & EPA_DB_UNIQUE_INDEX) );
CHECK( (flag & EPA_DB_UNIQUE_INDEX) == FALSE );
CHECK(flag & EPA_PRIMARY_KEY);
flag = EPA_PRIMARY_KEY | EPA_DB_INDEXING;
CHECK(flag & EPA_PRIMARY_KEY);
CHECK(flag & EPA_DB_INDEXING);
CHECK((flag & EPA_PRIMARY_KEY) && (flag & EPA_DB_INDEXING));
CHECK((flag & EPA_WRITE_THRUOGH) == FALSE);
}
Author Details
Kubernetes, DevSecOps, AWS, 클라우드 보안, 클라우드 비용관리, SaaS 의 활용과 내재화 등 소프트웨어 개발 전반에 도움이 필요하다면 도움을 요청하세요. 지인이라면 가볍게 도와드리겠습니다. 전문적인 도움이 필요하다면 저의 현업에 방해가 되지 않는 선에서 협의가능합니다.
앗.. 스킨이 확 바꼈네요 (뒷북인가요 -_-)
RSS로만 보다보니 몰랐네요
잘보고갑니다:
상당한 뒷북이십니다.