This is TestArchive.m in view mode; [Download] [Up]
//
// TestArchive
//
// This program tests the archiving abilities of the Random System.
//
#import "Random.h"
#import "StandardEngine.h"
#import "ElkinsEngine.h"
#import "R250Engine.h"
#import <objc/typedstream.h>
#import <stdio.h>
//
// test_archive()
//
void test_archive(id myRand)
{
double buffer[1000];
double foo;
int i;
NXTypedStream *myStream;
id myNewRand;
//
// Skip 1000 numbers
//
printf(" Generating 1000 percentages...\n");
for(i = 0; i < 1000; i++) {
foo = [myRand percent];
}
//
// Archive the random:
//
printf(" Archiving the random object to the file 'ArchivedRandom.rand'...\n");
myStream = NXOpenTypedStreamForFile("ArchivedRandom.rand", NX_WRITEONLY);
[myRand write:myStream];
NXCloseTypedStream(myStream);
//
// Generate and save a bunch of numbers:
//
printf(" Generating and saving 1000 percentages...\n");
for(i = 0; i < 1000; i++) {
buffer[i] = [myRand percent];
}
//
// De-archive the random:
//
printf(" Reading a copy of the archive from the file 'ArchivedRandom.rand'...\n");
myStream = NXOpenTypedStreamForFile("ArchivedRandom.rand", NX_READONLY);
myNewRand = [[Random alloc] read:myStream];
NXCloseTypedStream(myStream);
//
// Create 1000 more numbers, and compare them:
//
printf(" Creating and comparing 1000 percentages to previous results...\n");
for(i = 0; i < 1000; i++) {
if(buffer[i] != [myNewRand percent]) {
printf(">> Sequence diverged at %d!\n", i);
break;
}
}
//
// Free data objects:
//
printf(" Freeing temporary random number generator...\n");
[myNewRand free];
return;
}
//
// main()
//
int main(int argc, char *argv[])
{
id myRand;
printf("TestPercent: Testing StandardEngine class:\n");
myRand = [[Random alloc] initEngineClass:[StandardEngine class]];
test_archive(myRand);
printf("\n\n");
[myRand free];
printf("TestPercent: Testing ElkinsEngine class:\n");
myRand = [[Random alloc] initEngineClass:[ElkinsEngine class]];
test_archive(myRand);
printf("\n\n");
[myRand free];
printf("TestPercent: Testing R250Engine class:\n");
myRand = [[Random alloc] initEngineClass:[R250Engine class]];
test_archive(myRand);
printf("\n\n");
[myRand free];
return 0;
}
//
// End of file.
//These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.