Initial full mirror of c:\VWE (source + assets + toolchain + outputs) via Git LFS

Complete disaster-recovery snapshot: engine/game source, game data assets,
VC6 toolchain + DX SDKs, build outputs, deployed game, and _UNUSED archive.
Large binaries in Git LFS; text preserved byte-for-byte (core.autocrlf=false,
no eol attributes). See RECOVERY.md for the one-clone rebuild procedure.
This commit is contained in:
Cyd
2026-06-24 21:28:16 -05:00
commit 2b8ca921cb
66341 changed files with 7923174 additions and 0 deletions
@@ -0,0 +1,537 @@
//===========================================================================//
// File: chain.tst //
// Project: MUNGA Brick: Connection Library //
// Contents: Verify function for chain class //
//---------------------------------------------------------------------------//
// Date Who Modification //
// -------- --- ---------------------------------------------------------- //
// 09/29/94 ECH Initial coding. //
// 10/28/94 JMA Made compatible with SGI CC //
// 11/03/94 ECH Made compatible with BC4.0 //
// 11/04/94 JMA Made compatible with GNU C++ //
// 11/04/94 ECH Merged changes
//---------------------------------------------------------------------------//
// Copyright (C) 1994, Virtual World Entertainment, Inc. All Rights reserved //
// PROPRIETARY AND CONFIDENTIAL //
//===========================================================================//
#include "StuffHeaders.hpp"
#include <GameOS\ToolOS.hpp>
#define TEST_COUNT 50
class ChainTestPlug:
public Plug
{
public:
long value;
ChainTestPlug(long value);
~ChainTestPlug();
};
class ChainTestNode:
public Plug
{
public:
int receivedCommand;
ChainOf<ChainTestPlug*> chain1;
ChainOf<ChainTestPlug*> chain2;
ChainTestNode();
~ChainTestNode();
bool RunProfile();
bool RunTest();
};
ChainTestPlug::ChainTestPlug(long value):
Plug(DefaultData)
{
this->value = value;
}
ChainTestPlug::~ChainTestPlug()
{
}
ChainTestNode::ChainTestNode():
Plug(DefaultData),
chain1(NULL),
chain2(NULL)
{
receivedCommand = 0;
}
ChainTestNode::~ChainTestNode()
{
}
//
//###########################################################################
// ProfileClass
//###########################################################################
//
bool
Chain::ProfileClass()
{
ChainTestNode testNode;
#if defined(_ARMOR)
Time startTicks = gos_GetHiResTime();
#endif
Test_Message("Chain::ProfileClass\n");
testNode.RunProfile();
SPEW((
GROUP_STUFF_TEST,
"Chain::ProfileClass elapsed = %f",
gos_GetHiResTime() - startTicks
));
return true;
}
//
//###########################################################################
// TestClass
//###########################################################################
//
bool
Chain::TestClass()
{
SPEW((GROUP_STUFF_TEST, "Starting Chain test..."));
ChainTestNode testNode;
testNode.RunTest();
return true;
}
//
//###########################################################################
// RunProfile
//###########################################################################
//
bool
ChainTestNode::RunProfile()
{
ChainTestPlug *testPlug1;
unsigned i;
Time startTicks;
//
//--------------------------------------------------------------------
// Run timing tests
//--------------------------------------------------------------------
//
/*
* Create plugs and add to both sockets
*/
startTicks = gos_GetHiResTime();
for (i = 0; i < TEST_COUNT; i++)
{
testPlug1 = new ChainTestPlug(i);
Register_Object( testPlug1 );
chain1.Add(testPlug1);
chain2.Add(testPlug1);
}
SPEW((
GROUP_STUFF_TEST,
"ChainTestNode::RunTest Create = %f",
gos_GetHiResTime() - startTicks
));
/*
* Iterate over both sockets
*/
startTicks = gos_GetHiResTime();
{
ChainIteratorOf<ChainTestPlug*> iterator1(&chain1);
ChainIteratorOf<ChainTestPlug*> iterator2(&chain2);
Verify( iterator1.GetSize() == TEST_COUNT );
Verify( iterator2.GetSize() == TEST_COUNT );
i = 0;
while ((testPlug1 = iterator1.ReadAndNext()) != NULL)
{
Verify( testPlug1->value == i );
i++;
}
Verify( i == TEST_COUNT );
i = 0;
while ((testPlug1 = iterator2.ReadAndNext()) != NULL)
{
Verify( testPlug1->value == i );
i++;
}
Verify( i == TEST_COUNT );
}
SPEW((
GROUP_STUFF_TEST,
"ChainTestNode::RunTest Iterate = %f",
gos_GetHiResTime() - startTicks
));
/*
* Destroy from chain1, verify with chain2
*/
startTicks = gos_GetHiResTime();
{
ChainIteratorOf<ChainTestPlug*> iterator1(&chain1);
ChainIteratorOf<ChainTestPlug*> iterator2(&chain2);
Verify( iterator1.GetSize() == TEST_COUNT );
Verify( iterator2.GetSize() == TEST_COUNT );
#if defined(_ARMOR)
i = 0;
#endif
while ((testPlug1 = iterator1.ReadAndNext()) != NULL)
{
Verify( testPlug1->value == i++ );
Unregister_Object( testPlug1 );
delete(testPlug1);
}
Verify( i == TEST_COUNT );
Verify( iterator1.GetSize() == 0 );
Verify( iterator2.GetSize() == 0 );
}
SPEW((
GROUP_STUFF_TEST,
"ChainTestNode::RunTest Destroy = %f",
gos_GetHiResTime() - startTicks
));
return true;
}
//
//###########################################################################
// RunTest
//###########################################################################
//
bool
ChainTestNode::RunTest()
{
ChainTestPlug *testPlug1, *testPlug2;
unsigned i;
// Time startTicks;
//
//--------------------------------------------------------------------
// Stress tests
//--------------------------------------------------------------------
//
/*
* Create plugs and add to both sockets
*/
for (i = 0; i < TEST_COUNT; i++)
{
testPlug1 = new ChainTestPlug(i);
Register_Object( testPlug1 );
chain1.Add(testPlug1);
chain2.Add(testPlug1);
}
/*
* Verify first and last
*/
{
ChainIteratorOf<ChainTestPlug*> iterator1(&chain1);
ChainIteratorOf<ChainTestPlug*> iterator2(&chain2);
Verify( iterator1.GetSize() == TEST_COUNT );
Verify( iterator2.GetSize() == TEST_COUNT );
iterator1.First();
iterator2.First();
testPlug1 = iterator1.GetCurrent();
testPlug2 = iterator2.GetCurrent();
Verify( testPlug1 == testPlug2 );
Verify( testPlug1 == iterator1.GetNth(0) );
Verify( testPlug1 == iterator2.GetNth(0) );
iterator1.Last();
iterator2.Last();
testPlug1 = iterator1.GetCurrent();
testPlug2 = iterator2.GetCurrent();
Verify( testPlug1 == testPlug2 );
Verify( testPlug1 == iterator1.GetNth(TEST_COUNT - 1) );
Verify( testPlug1 == iterator2.GetNth(TEST_COUNT - 1) );
}
/*
* Verify next and prev
*/
{
ChainIteratorOf<ChainTestPlug*> iterator1(&chain1);
ChainIteratorOf<ChainTestPlug*> iterator2(&chain2);
Verify( iterator1.GetSize() == TEST_COUNT );
Verify( iterator2.GetSize() == TEST_COUNT );
i = 0;
while ((testPlug1 = iterator1.GetCurrent()) != NULL)
{
testPlug2 = iterator2.GetCurrent();
Verify( testPlug1 == testPlug2 );
Verify( testPlug1->value == i );
Verify( testPlug2->value == i );
iterator1.Next();
iterator2.Next();
i++;
}
Verify( i == TEST_COUNT );
iterator1.Last();
iterator2.Last();
i = TEST_COUNT - 1;
while ((testPlug1 = iterator1.GetCurrent()) != NULL)
{
testPlug2 = iterator2.GetCurrent();
Verify( testPlug1 == testPlug2 );
Verify( testPlug1->value == i );
Verify( testPlug2->value == i );
iterator1.Previous();
iterator2.Previous();
i--;
}
Verify( i == -1 );
}
/*
* Verify read next and read prev
*/
{
ChainIteratorOf<ChainTestPlug*> iterator1(&chain1);
ChainIteratorOf<ChainTestPlug*> iterator2(&chain2);
Verify( iterator1.GetSize() == TEST_COUNT );
Verify( iterator2.GetSize() == TEST_COUNT );
i = 0;
while ((testPlug1 = iterator1.ReadAndNext()) != NULL)
{
testPlug2 = iterator2.ReadAndNext();
Verify( testPlug1 == testPlug2 );
Verify( testPlug1->value == i );
Verify( testPlug2->value == i );
i++;
}
Verify( i == TEST_COUNT );
iterator1.Last();
iterator2.Last();
i = TEST_COUNT - 1;
while ((testPlug1 = iterator1.ReadAndPrevious()) != NULL)
{
testPlug2 = iterator2.ReadAndPrevious();
Verify( testPlug1 == testPlug2 );
Verify( testPlug1->value == i );
Verify( testPlug2->value == i );
i--;
}
Verify( i == -1 );
}
/*
* Verify nth
*/
{
ChainIteratorOf<ChainTestPlug*> iterator1(&chain1);
ChainIteratorOf<ChainTestPlug*> iterator2(&chain2);
Verify( iterator1.GetSize() == TEST_COUNT );
Verify( iterator2.GetSize() == TEST_COUNT );
for (i = 0; i < TEST_COUNT; i++)
{
testPlug1 = iterator1.GetNth(i);
testPlug2 = iterator2.GetNth(i);
Verify( testPlug1 == testPlug2 );
Verify( testPlug1->value == i );
Verify( testPlug2->value == i );
}
}
/*
* Verify Remove
*/
{
ChainIteratorOf<ChainTestPlug*> iterator1(&chain1);
ChainIteratorOf<ChainTestPlug*> iterator2(&chain2);
Verify( iterator1.GetSize() == TEST_COUNT );
Verify( iterator2.GetSize() == TEST_COUNT );
i = 0;
while ((testPlug1 = iterator1.GetCurrent()) != NULL)
{
Verify( testPlug1->value == i );
if (i % 2 == 0)
{
iterator1.Remove();
}
else
{
iterator1.Next();
chain1.Remove(testPlug1);
}
testPlug2 = iterator2.GetNth(0);
Verify( testPlug2->value == i );
Verify( testPlug1 == testPlug2 );
Unregister_Object( testPlug2 );
delete(testPlug2);
i++;
}
Verify( i == TEST_COUNT );
Verify( iterator1.GetSize() == 0 );
Verify( iterator2.GetSize() == 0 );
}
/*
* Verify insert
*/
{
ChainIteratorOf<ChainTestPlug*> iterator1(&chain1);
Verify( iterator1.GetSize() == 0 );
for (i = 0; i < TEST_COUNT; i += 2)
{
testPlug1 = new ChainTestPlug(i);
Register_Object(testPlug1);
chain1.Add(testPlug1);
}
for (i = 1; i < TEST_COUNT; i += 2)
{
testPlug1 = new ChainTestPlug(i);
Register_Object(testPlug1);
iterator1.First();
while ((testPlug2 = iterator1.GetCurrent()) != NULL)
{
if (i < testPlug2->value)
{
iterator1.Insert(testPlug1);
break;
}
iterator1.Next();
}
if (testPlug2 == NULL)
{
chain1.Add(testPlug1);
}
}
Verify( iterator1.GetSize() == TEST_COUNT );
for (i = 1; i < TEST_COUNT; i++)
{
testPlug1 = iterator1.GetNth(i);
testPlug2 = iterator1.GetNth(i-1);
Verify(testPlug2->value < testPlug1->value);
}
}
{
ChainIteratorOf<ChainTestPlug*> iterator1(&chain1);
while ((testPlug1 = iterator1.GetCurrent()) != NULL)
{
Unregister_Object(testPlug1);
delete(testPlug1);
iterator1.First();
}
}
/*
* Verify random deletion
*/
{
/*
* Add plugs to both sockets
*/
ChainIteratorOf<ChainTestPlug*> iterator1(&chain1);
ChainIteratorOf<ChainTestPlug*> iterator2(&chain2);
Verify( iterator1.GetSize() == 0 );
Verify( iterator2.GetSize() == 0 );
for (i = 0; i < TEST_COUNT; i++)
{
testPlug1 = new ChainTestPlug(i);
Register_Object( testPlug1 );
chain1.Add(testPlug1);
chain2.Add(testPlug1);
}
}
{
int size, index;
ChainIteratorOf<ChainTestPlug*> iterator1(&chain1);
ChainIteratorOf<ChainTestPlug*> iterator2(&chain2);
Verify( iterator1.GetSize() == TEST_COUNT );
Verify( iterator2.GetSize() == TEST_COUNT );
i = 0;
while((size = iterator1.GetSize()) != 0)
{
index = Random::GetLessThan(size);
testPlug1 = iterator1.GetNth(index);
iterator1.Remove();
testPlug2 = iterator2.GetNth(index);
Verify( testPlug1 == testPlug2 );
Unregister_Object( testPlug2 );
delete(testPlug2);
i++;
}
Verify( i == TEST_COUNT );
Verify( iterator1.GetSize() == 0 );
Verify( iterator2.GetSize() == 0 );
}
return true;
}