/* File: sample.c
   A sample main program which uses the sparse.h functions
*/

#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include "sparse.h"

main() {
   matrix_ptr Test1, Test2, Test3, Answer ;
   int result ;

   /* Read in the test files */
   Test1 = LoadMatrix("test1-5x5") ;
   Test2 = LoadMatrix("test2-5x5") ;
   Test3 = LoadMatrix("test3-5x10") ;

   assert(Test1 != NULL && Test2 != NULL && Test3 != NULL) ;

   /* Test Copy */ 
   Answer = CopyMatrix(Test1) ;
   assert(Answer != NULL) ;
   result = StoreMatrix("answer1copy", Answer) ;
   assert(result != 0) ;
   FreeMatrix(Answer) ;


   /* Test Addition */
   Answer = AddMatrix(Test1, Test2) ;
   assert(Answer != NULL) ;
   result = StoreMatrix("answer1+2", Answer) ;
   assert(result != 0) ;
   FreeMatrix(Answer) ;

   /* Test Subtraction */
   Answer = SubtractMatrix(Test1, Test2) ;
   assert(Answer != NULL) ;
   result = StoreMatrix("answer1-2", Answer) ;
   assert(result != 0) ;
   FreeMatrix(Answer) ;
   
   /* Test Multiplication */
   Answer = MultiplyMatrix(Test1, Test2) ;
   assert(Answer != NULL) ;
   result = StoreMatrix("answer1x2", Answer) ;
   assert(result != 0) ;
   FreeMatrix(Answer) ;

   Answer = MultiplyMatrix(Test1, Test3) ;
   assert(Answer != NULL) ;
   result = StoreMatrix("answer1x3", Answer) ;
   assert(result != 0) ;
   FreeMatrix(Answer) ;

   Answer = MultiplyMatrix(Test2, Test3) ;
   assert(Answer != NULL) ;
   result = StoreMatrix("answer2x3", Answer) ;
   assert(result != 0) ;
   FreeMatrix(Answer) ;

   /* Test Power */
   Answer = PowerMatrix(Test1, 2) ;
   assert(Answer != NULL) ;
   result = StoreMatrix("answer1to2", Answer) ;
   assert(result != 0) ;
   FreeMatrix(Answer) ;

   Answer = PowerMatrix(Test1, 4) ;
   assert(Answer != NULL) ;
   result = StoreMatrix("answer1to4", Answer) ;
   assert(result != 0) ;
   FreeMatrix(Answer) ;

}
