ftp.nice.ch/pub/next/developer/resources/classes/PriorityQueue.s.tar.gz#/PriorityQueue/queuetest.m

This is queuetest.m in view mode; [Download] [Up]

/* NAME:
**	QueueTest.m
**
**	COPYRIGHT 1992 BY ONYSCHUK AND ASSOCIATES
**	ALL RIGHTS RESERVED.
**
** REVISION HISTORY:
**	Sun Aug 23 21:10:26 EDT 1992	Mark Onyschuk
**					Starting point
**
** DESCRIPTION:
**	Program to demonstrate and put the PriorityQueue class
**	to the test.
**
** DISCLAIMER:
**	This is free software; you can redistribute it and/or modify
**	it under the terms of the GNU General Public License as
**	published by the Free Software Foundation; either version
**	1, or (at your option) any later version.
**
**	This program is distributed in the hope that it will be
**	useful, but WITHOUT ANY WARRANTY; without even the implied
**	warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
**	PURPOSE.  See the GNU General Public License for more
**	details.
**
**	You should have received a copy of the GNU General Public
**	License along with this program; if not, write to the Free
**	Software Foundation, Inc., 675 Mass Ave, Cambridge, MA
**	02139, USA.
*/

#define NELEM	10

#import "PriorityQueue.h"

void prioritize(void)
{
    int			i;
    
    id			queue;

    id			obj;
    unsigned int	priority;

    queue = [[PriorityQueue alloc] init];
    
    printf("Queueing and dequeueing Objects:\n\n");
    
    for (i = NELEM; i > 0; i--)
    {
    	 obj = [[Object alloc] init];
	 priority = random() % NELEM;
	 
	 printf("Queueing object %p with priority %d\n", obj, priority);
	 
	 [queue addObject:obj withPriority:priority];
    }
    
    printf("\n");
    
    for (i = NELEM; i > 0; i--)
    {
    	obj = [queue removeObject];
	
	printf("Dequeued object %p\n", obj);
    }
}


void copyqueue(void)
{
    int			i;
    
    id			queue;
    id			copyA;
    id			copyB;
    id			copyC;
    id			copyD;
    id			temp;

    id			obj;
    unsigned int	priority;

    queue = [[PriorityQueue alloc] init];
    
    printf("Copying Objects:\n\n");
    
    for (i = NELEM; i > 0; i--)
    {
    	 obj = [[Object alloc] init];
	 priority = random() % NELEM;
	 
	 printf("Queueing object %p with priority %d\n", obj, priority);
	 
	 [queue addObject:obj withPriority:priority];
    }
    
    printf("Copying queue to copyA, copyB, copyC, and copyD.\n");
    copyA = [queue copy];
    copyB = [queue copy];
    copyC = [queue copy];
    copyD = [queue copy];

    for (i = NELEM; i > 0; i--)
    {
	priority = [queue highestPriority];
    	obj      = [queue removeObject];
	
	printf("Dequeued object %p (orig.) with priority %d\n", obj, priority);
    }

    for (i = NELEM; i > 0; i--)
    {
	priority = [copyA highestPriority];
    	obj      = [copyA removeObject];
	
	printf("Dequeued object %p (copyA) with priority %d\n", obj, priority);
    }
    
    printf("copyB %s copyC\n", ([copyB isEqual:copyC]) ? "==" : "!=");
    
    
    printf("removing last item from copyD\n");
    [copyD removeObject];
    
    printf("copyC %s copyD\n", ([copyC isEqual:copyD]) ? "==" : "!=");
}


void main(void)
{
    prioritize();

    printf("\n");

    copyqueue();
}    

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.