libs-base/Tests/base/Functions/NSByteSwapping.m
2021-02-12 14:33:04 +01:00

59 lines
1.5 KiB
Objective-C

#import <Foundation/Foundation.h>
#import "Testing.h"
#ifndef M_PI
#define M_PI 3.14159265358979323846264338327950288
#endif
int main()
{
NSAutoreleasePool *pool = [NSAutoreleasePool new];
float flt=M_PI;
double dbl=M_PI;
PASS(NSSwapShort(0x1234) == (unsigned short)0x3412, "NSSwapShort works");
if (sizeof(long) == 4)
{
PASS(NSSwapLong(0x12345678L) == 0x78563412UL, "NSSwapLong works");
}
else if (sizeof(long) == 8)
{
PASS(NSSwapLongLong(0x123456789abcdef0LL) == 0xf0debc9a78563412LL,
"NSSwapLongLong works");
}
if (sizeof(long long) == 8)
{
PASS(NSSwapLongLong(0x123456789abcdef0LL) == 0xf0debc9a78563412LL,
"NSSwapLongLong works");
}
PASS(NSSwapBigFloatToHost(*((NSSwappedFloat *)&flt))
== ((NSHostByteOrder() == NS_LittleEndian)
? (float)-40331460896358400.0
: (float)M_PI),
"NSSwapBigFloatToHost works");
PASS(NSSwapLittleFloatToHost(*((NSSwappedFloat *)&flt))
== ((NSHostByteOrder() == NS_BigEndian)
? (float)-40331460896358400.0
: (float)M_PI),
"NSSwapLittleFloatToHost works");
PASS(NSSwapBigDoubleToHost(*((NSSwappedDouble *)&dbl))
== ((NSHostByteOrder() == NS_LittleEndian)
? 3.20737563067636581208678536384e-192
: M_PI),
"NSSwapBigDoubleToHost works");
PASS(NSSwapLittleDoubleToHost(*((NSSwappedDouble *)&dbl))
== ((NSHostByteOrder() == NS_BigEndian)
? 3.20737563067636581208678536384e-192
: M_PI),
"NSSwapLittleDoubleToHost wworks");
[pool release]; pool = nil;
return 0;
}