#!/usr/local/bin/python
#
# File:        testarrays
# Copyright:   (c) 2001 The Regents of the University of California
# Release:     $Name: release-0-8-8 $
# Revision:    @(#) $Revision: 1.13 $
# Date:        $Date: 2003/08/19 23:29:42 $
# Description: Exercise arrays of fundamental types from Python
#
# Try to exercise everything possible in Python.

import SIDL.BaseClass
import ArrayTest.ArrayOps
from Numeric import *

# Return a true value iff sequences, seq1 and seq2, are equal.
def isEqual(seq1, seq2):
  if (len(seq1) == len(seq2)):
    for i in range(len(seq1)):
      if (seq1[i] != seq2[i]):
        return 0
    return 1
  return 0

# Return a true value iff seq1 is equal to seq2.reverse().
def isReversed(seq1, seq2):
  if (len(seq1) == len(seq2)):
    for i in range(len(seq1)):
      if (seq1[i] != seq2[len(seq2) - i - 1]):
        return 0
    return 1
  return 0 

if __name__ == '__main__':
  print "NPARTS -1"
  numpass = 0
  numfail = 0
  numxfail = 0
  partno = 0
  TEST_SIZE = 345
  TEST_DIM1 = 17
  TEST_DIM2 = 13

  partno = partno + 1
  print "PART ", partno
  print "COMMENT: checkBool(createBool(TEST_SIZE))"
  if (ArrayTest.ArrayOps.checkBool(ArrayTest.ArrayOps.createBool(TEST_SIZE))):
    print "RESULT", partno, "PASS"
    numpass = numpass + 1
  else:
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1

  partno = partno + 1
  print "PART ", partno
  print "COMMENT: checkChar(createChar(TEST_SIZE))"
  if (ArrayTest.ArrayOps.checkChar(ArrayTest.ArrayOps.createChar(TEST_SIZE))):
    print "RESULT", partno, "PASS"
    numpass = numpass + 1
  else:
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1

  partno = partno + 1
  print "PART ", partno
  print "COMMENT: checkInt(createInt(TEST_SIZE))"
  obj = ArrayTest.ArrayOps.createInt(TEST_SIZE)
  if (obj and obj[0] == 2 and obj[1] == 3 and
      ArrayTest.ArrayOps.checkInt(obj)):
    print "RESULT", partno, "PASS"
    numpass = numpass + 1
  else:
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1
  obj = None

  partno = partno + 1
  print "PART ", partno
  print "COMMENT: checkLong(createLong(TEST_SIZE))"
  obj = ArrayTest.ArrayOps.createLong(TEST_SIZE)
  if (obj and obj[0] == 2 and obj[1] == 3 and
      ArrayTest.ArrayOps.checkLong(obj)):
    print "RESULT", partno, "PASS"
    numpass = numpass + 1 
  else:
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1
  obj = None

  partno = partno + 1
  print "PART ", partno
  print "COMMENT: checkString(createString(TEST_SIZE))"
  if (ArrayTest.ArrayOps.checkString(ArrayTest.ArrayOps.createString(TEST_SIZE))):
    print "RESULT", partno, "PASS"
    numpass = numpass + 1
  else:
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1

  partno = partno + 1
  print "PART ", partno
  print "COMMENT: checkDouble(createDouble(TEST_SIZE))"
  if (ArrayTest.ArrayOps.checkDouble(ArrayTest.ArrayOps.createDouble(TEST_SIZE))):
    print "RESULT", partno, "PASS"
    numpass = numpass + 1
  else:
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1

  partno = partno + 1
  print "PART ", partno
  print "COMMENT: checkFloat(createFloat(TEST_SIZE))"
  if (ArrayTest.ArrayOps.checkFloat(ArrayTest.ArrayOps.createFloat(TEST_SIZE))):
    print "RESULT", partno, "PASS"
    numpass = numpass + 1
  else:
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1

  partno = partno + 1
  print "PART ", partno
  print "COMMENT: checkFcomplex(createFcomplex(TEST_SIZE))"
  if (ArrayTest.ArrayOps.checkFcomplex(ArrayTest.ArrayOps.createFcomplex(32))):
    print "RESULT", partno, "PASS"
    numpass = numpass + 1
  else:
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1

  partno = partno + 1
  print "PART ", partno
  print "COMMENT: checkDcomplex(createDcomplex(TEST_SIZE))"
  if (ArrayTest.ArrayOps.checkDcomplex(ArrayTest.ArrayOps.createDcomplex(32))):
    print "RESULT", partno, "PASS"
    numpass = numpass + 1
  else:
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1

  partno = partno + 1
  print "PART ", partno
  print "COMMENT: checkBool(makeBool(TEST_SIZE))"
  if (ArrayTest.ArrayOps.checkBool(ArrayTest.ArrayOps.makeBool(TEST_SIZE))):
    print "RESULT", partno, "PASS"
    numpass = numpass + 1
  else:
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1

  partno = partno + 1
  print "PART ", partno
  print "COMMENT: checkChar(makeChar(TEST_SIZE))"
  if (ArrayTest.ArrayOps.checkChar(ArrayTest.ArrayOps.makeChar(TEST_SIZE))):
    print "RESULT", partno, "PASS"
    numpass = numpass + 1
  else:
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1

  partno = partno + 1
  print "PART ", partno
  print "COMMENT: checkInt(makeInt(TEST_SIZE))"
  obj = ArrayTest.ArrayOps.makeInt(TEST_SIZE)
  if (obj and obj[0] == 2 and obj[1] == 3 and
      ArrayTest.ArrayOps.checkInt(obj)):
    print "RESULT", partno, "PASS"
    numpass = numpass + 1
  else:
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1

  partno = partno + 1
  print "PART ", partno
  print "COMMENT: checkLong(makeLong(TEST_SIZE))"
  obj = ArrayTest.ArrayOps.makeLong(TEST_SIZE)
  if (obj and obj[0] == 2 and obj[1] == 3 and
      ArrayTest.ArrayOps.checkLong(obj)):
    print "RESULT", partno, "PASS"
    numpass = numpass + 1
  else:
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1
  obj = None

  partno = partno + 1
  print "PART ", partno
  print "COMMENT: checkString(makeString(TEST_SIZE))"
  if (ArrayTest.ArrayOps.checkString(ArrayTest.ArrayOps.makeString(TEST_SIZE))):
    print "RESULT", partno, "PASS"
    numpass = numpass + 1
  else:
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1

  partno = partno + 1
  print "PART ", partno
  print "COMMENT: checkDouble(makeDouble(TEST_SIZE))"
  if (ArrayTest.ArrayOps.checkDouble(ArrayTest.ArrayOps.makeDouble(TEST_SIZE))):
    print "RESULT", partno, "PASS"
    numpass = numpass + 1
  else:
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1

  partno = partno + 1
  print "PART ", partno
  print "COMMENT: checkFloat(makeFloat(TEST_SIZE))"
  if (ArrayTest.ArrayOps.checkFloat(ArrayTest.ArrayOps.makeFloat(TEST_SIZE))):
    print "RESULT", partno, "PASS"
    numpass = numpass + 1
  else:
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1

  partno = partno + 1
  print "PART ", partno
  print "COMMENT: checkFcomplex(makeFcomplex(32))"
  if (ArrayTest.ArrayOps.checkFcomplex(ArrayTest.ArrayOps.makeFcomplex(32))):
    print "RESULT", partno, "PASS"
    numpass = numpass + 1
  else:
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1

  partno = partno + 1
  print "PART ", partno
  print "COMMENT: checkDcomplex(makeDcomplex(32))"
  if (ArrayTest.ArrayOps.checkDcomplex(ArrayTest.ArrayOps.makeDcomplex(32))):
    print "RESULT", partno, "PASS"
    numpass = numpass + 1
  else:
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1

  partno = partno + 1
  print "PART ", partno
  print "COMMENT: check reverse array of bools"
  array1 = ArrayTest.ArrayOps.createBool(TEST_SIZE)
  (passed, array2) = ArrayTest.ArrayOps.reverseBool(array1, 1)
  if (passed and isReversed(array1, array2)):
    print "RESULT", partno, "PASS"
    numpass = numpass + 1
  else:
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1
  array1 = None
  array2 = None

  partno = partno + 1
  print "PART ", partno
  print "COMMENT: check reverse array of bools"
  array1 = ArrayTest.ArrayOps.createBool(TEST_SIZE)
  (passed, array2) = ArrayTest.ArrayOps.reverseBool(array1, 0)
  if (passed and (isEqual(array1, array2))):
    print "RESULT", partno, "PASS"
    numpass = numpass + 1
  else:
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1
  array1 = None
  array2 = None

  partno = partno + 1
  print "PART ", partno
  print "COMMENT: check reverse array of chars"
  array1 = ArrayTest.ArrayOps.createChar(TEST_SIZE)
  (passed, array2) = ArrayTest.ArrayOps.reverseChar(array1, 1)
  if (passed and isReversed(array1, array2)):
    print "RESULT", partno, "PASS"
    numpass = numpass + 1
  else:
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1
  array1 = None
  array2 = None

  partno = partno + 1
  print "PART ", partno
  print "COMMENT: check reverse array of chars"
  array1 = ArrayTest.ArrayOps.createChar(TEST_SIZE)
  (passed, array2) = ArrayTest.ArrayOps.reverseChar(array1, 0)
  if (passed and (isEqual(array1, array2))):
    print "RESULT", partno, "PASS"
    numpass = numpass + 1
  else:
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1
  array1 = None
  array2 = None

  partno = partno + 1
  print "PART ", partno
  print "COMMENT: check reverse array of ints"
  array1 = ArrayTest.ArrayOps.createInt(TEST_SIZE)
  (passed, array2) = ArrayTest.ArrayOps.reverseInt(array1, 1)
  if (passed and isReversed(array1, array2)):
    print "RESULT", partno, "PASS"
    numpass = numpass + 1
  else:
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1
  array1 = None
  array2 = None

  partno = partno + 1
  print "PART ", partno
  print "COMMENT: check reverse array of ints"
  array1 = ArrayTest.ArrayOps.createInt(TEST_SIZE)
  (passed, array2) = ArrayTest.ArrayOps.reverseInt(array1, 0)
  if (passed and (isEqual(array1, array2))):
    print "RESULT", partno, "PASS"
    numpass = numpass + 1
  else:
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1
  array1 = None
  array2 = None

  partno = partno + 1
  print "PART ", partno
  print "COMMENT: check reverse array of longs"
  array1 = ArrayTest.ArrayOps.createLong(TEST_SIZE)
  (passed, array2) = ArrayTest.ArrayOps.reverseLong(array1, 1)
  if (passed and isReversed(array1, array2)):
    print "RESULT", partno, "PASS"
    numpass = numpass + 1
  else:
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1
  array1 = None
  array2 = None

  partno = partno + 1
  print "PART ", partno
  print "COMMENT: check reverse array of longs"
  array1 = ArrayTest.ArrayOps.createLong(TEST_SIZE)
  (passed, array2) = ArrayTest.ArrayOps.reverseLong(array1, 0)
  if (passed and (isEqual(array1, array2))):
    print "RESULT", partno, "XPASS"
    numfail = numfail + 1
  else:
    if (passed and (isReversed(array1, array2))):
      print "RESULT", partno, "XFAIL"
      numxfail = numxfail + 1
    else:
      print "RESULT", partno, "FAIL"
      numfail = numfail + 1
  array1 = None
  array2 = None

  partno = partno + 1
  print "PART ", partno
  print "COMMENT: check reverse array of strings"
  array1 = ArrayTest.ArrayOps.createString(TEST_SIZE)
  (passed, array2) = ArrayTest.ArrayOps.reverseString(array1, 1)
  if (passed and isReversed(array1, array2)):
    print "RESULT", partno, "PASS"
    numpass = numpass + 1
  else:
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1
  array1 = None
  array2 = None

  partno = partno + 1
  print "PART ", partno
  print "COMMENT: check reverse array of strings"
  array1 = ArrayTest.ArrayOps.createString(TEST_SIZE)
  (passed, array2) = ArrayTest.ArrayOps.reverseString(array1, 0)
  if (passed and (isEqual(array1, array2))):
    print "RESULT", partno, "XPASS"
    numfail = numfail + 1
  else:
    if (passed and (isReversed(array1, array2))):
      print "RESULT", partno, "XFAIL"
      numxfail = numxfail + 1
    else:
      print "RESULT", partno, "FAIL"
      numfail = numfail + 1
  array1 = None
  array2 = None

  partno = partno + 1
  print "PART ", partno
  print "COMMENT: check reverse array of doubles"
  array1 = ArrayTest.ArrayOps.createDouble(32)
  (passed, array2) = ArrayTest.ArrayOps.reverseDouble(array1, 1)
  if (passed and isReversed(array1, array2)):
    print "RESULT", partno, "PASS"
    numpass = numpass + 1
  else:
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1
  array1 = None
  array2 = None

  partno = partno + 1
  print "PART ", partno
  print "COMMENT: check reverse array of doubles"
  array1 = ArrayTest.ArrayOps.createDouble(32)
  (passed, array2) = ArrayTest.ArrayOps.reverseDouble(array1, 0)
  if (passed and (isEqual(array1, array2))):
    print "RESULT", partno, "PASS"
    numpass = numpass + 1
  else:
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1
  array1 = None
  array2 = None

  partno = partno + 1
  print "PART ", partno
  print "COMMENT: check reverse array of floats"
  array1 = ArrayTest.ArrayOps.createFloat(32)
  (passed, array2) = ArrayTest.ArrayOps.reverseFloat(array1, 1)
  if (passed and isReversed(array1, array2)):
    print "RESULT", partno, "PASS"
    numpass = numpass + 1
  else:
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1
  array1 = None
  array2 = None

  partno = partno + 1
  print "PART ", partno
  print "COMMENT: check reverse array of floats"
  array1 = ArrayTest.ArrayOps.createFloat(32)
  (passed, array2) = ArrayTest.ArrayOps.reverseFloat(array1, 0)
  if (passed and (isEqual(array1, array2))):
    print "RESULT", partno, "PASS"
    numpass = numpass + 1
  else:
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1
  array1 = None
  array2 = None

  partno = partno + 1
  print "PART ", partno
  print "COMMENT: check reverse array of fcomplex"
  array1 = ArrayTest.ArrayOps.createFcomplex(32)
  (passed, array2) = ArrayTest.ArrayOps.reverseFcomplex(array1, 1)
  if (passed and isReversed(array1, array2)):
    print "RESULT", partno, "PASS"
    numpass = numpass + 1
  else:
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1
  array1 = None
  array2 = None

  partno = partno + 1
  print "PART ", partno
  print "COMMENT: check reverse array of fcomplex"
  array1 = ArrayTest.ArrayOps.createFcomplex(32)
  (passed, array2) = ArrayTest.ArrayOps.reverseFcomplex(array1, 0)
  if (passed and (isEqual(array1, array2))):
    print "RESULT", partno, "PASS"
    numpass = numpass + 1
  else:
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1
  array1 = None
  array2 = None

  partno = partno + 1
  print "PART ", partno
  print "COMMENT: check reverse array of dcomplex"
  array1 = ArrayTest.ArrayOps.createDcomplex(32)
  (passed, array2) = ArrayTest.ArrayOps.reverseDcomplex(array1, 1)
  if (passed and isReversed(array1, array2)):
    print "RESULT", partno, "PASS"
    numpass = numpass + 1
  else:
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1
  array1 = None
  array2 = None

  partno = partno + 1
  print "PART ", partno
  print "COMMENT: check reverse array of dcomplex"
  array1 = ArrayTest.ArrayOps.createDcomplex(32)
  (passed, array2) = ArrayTest.ArrayOps.reverseDcomplex(array1, 0)
  if (passed and (isEqual(array1, array2))):
    print "RESULT", partno, "PASS"
    numpass = numpass + 1
  else:
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1
  array1 = None
  array2 = None

  partno = partno + 1
  print "PART ", partno
  print "COMMENT: check coercion of embedded lists of doubles to double array"
  array1 = [ [ 1.0, 0.5],
             [ 2.0, 1.0] ]
  if (ArrayTest.ArrayOps.check2Double(array1)):
    print "RESULT", partno, "PASS"
    numpass = numpass + 1
  else:
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1

  partno = partno + 1
  print "PART ", partno
  print "COMMENT: check coercion of embedded lists of doubles to float array"
  if (ArrayTest.ArrayOps.check2Float(array1)):
    print "RESULT", partno, "PASS"
    numpass = numpass + 1
  else:
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1

  partno = partno + 1
  print "PART ", partno
  print "COMMENT: check remotely created 2D double array"
  array1 = ArrayTest.ArrayOps.create2Double(TEST_DIM1,TEST_DIM2)
  if (ArrayTest.ArrayOps.check2Double(array1)):
    print "RESULT", partno, "PASS"
    numpass = numpass + 1
  else:
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1

  partno = partno + 1
  print "PART ", partno
  print "COMMENT: check remotely created 2D float array"
  array1 = ArrayTest.ArrayOps.create2Float(TEST_DIM1,TEST_DIM2)
  if (ArrayTest.ArrayOps.check2Float(array1)):
    print "RESULT", partno, "PASS"
    numpass = numpass + 1
  else:
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1

  partno = partno + 1
  print "PART ", partno
  print "COMMENT: check coercion of embedded lists of complex to fcomplex array"
  array1 = [ [ 1.0 + 1.0j, 1.0 + 0.5j],
             [ 2.0 + 1.0j, 2.0 + 0.5j]]
  if (ArrayTest.ArrayOps.check2Fcomplex(array1)):
    print "RESULT", partno, "PASS"
    numpass = numpass + 1
  else:
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1

  partno = partno + 1
  print "PART ", partno
  print "COMMENT: check coercion of embedded lists of complex to dcomplex array"
  if (ArrayTest.ArrayOps.check2Dcomplex(array1)):
    print "RESULT", partno, "PASS"
    numpass = numpass + 1
  else:
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1

  partno = partno + 1
  print "PART ", partno
  print "COMMENT: check remotely created 2D dcomplex array"
  array1 = ArrayTest.ArrayOps.create2Dcomplex(TEST_DIM1,TEST_DIM2)
  if (ArrayTest.ArrayOps.check2Dcomplex(array1)):
    print "RESULT", partno, "PASS"
    numpass = numpass + 1
  else:
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1

  partno = partno + 1
  print "PART ", partno
  print "COMMENT: check remotely created 2D fcomplex array"
  array1 = ArrayTest.ArrayOps.create2Fcomplex(TEST_DIM1,TEST_DIM2)
  if (ArrayTest.ArrayOps.check2Fcomplex(array1)):
    print "RESULT", partno, "PASS"
    numpass = numpass + 1
  else:
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1

#  array1 = [[[6, 8],
#             [9, 12]],
#            [[12, 16],
#             [18, 24]]]
  partno = partno + 1
  print "PART ", partno
  print "COMMENT: check remotely created 3-d int array"
  array1 = ArrayTest.ArrayOps.create3Int()
  if (ArrayTest.ArrayOps.check3Int(array1)):
    print "RESULT", partno, "PASS"
    numpass = numpass + 1
  else:
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1

#  array1 = [[[[24, 30],
#              [32, 40]],
#             [[36, 45],
#              [48, 60]]],
#            [[[48, 60],
#              [64, 80]],
#             [[72, 90],
#              [96, 120]]]]
  partno = partno + 1
  print "PART ", partno
  print "COMMENT: check remotely created 4-d int array"
  array1 = ArrayTest.ArrayOps.create4Int()
  if (ArrayTest.ArrayOps.check4Int(array1)):
    print "RESULT", partno, "PASS"
    numpass = numpass + 1
  else:
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1
             

  len = 100
  array1 = ArrayTest.ArrayOps.createInt(len)
  array2 = zeros([len, len])
  for i in range(len):
    array2[i] = array1
    if (not ArrayTest.ArrayOps.checkInt(array2[i])):
      print "Row slice failed"
  for i in range(len):
    array2[:,i] = array1
    if (not ArrayTest.ArrayOps.checkInt(array2[:,i])):
      print "Column slice failed"
  array3 = transpose(array2)
  for i in range(len):
    if (not ArrayTest.ArrayOps.checkInt(array3[i])):
      print "Row slice failed"
  for i in range(len):
    array2[:,i] = array1
    if (not ArrayTest.ArrayOps.checkInt(array2[:,i])):
      print "Column slice failed"
  
  partno = partno + 1
  print "PART ", partno
  print "COMMENT: check array of objects"
  if (ArrayTest.ArrayOps.checkObject(ArrayTest.ArrayOps.createObject(1027)) == 1027):
    print "RESULT", partno, "PASS"
    numpass = numpass + 1
  else:
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1

  partno = partno + 1
  print "PART ", partno
  print "COMMENT: check coercion of Python list of objects to array"
  if (ArrayTest.ArrayOps.checkObject([ None, None, ArrayTest.ArrayOps.ArrayOps(),
      None, ArrayTest.ArrayOps.ArrayOps() ] ) == 2):
    print "RESULT", partno, "PASS"
    numpass = numpass + 1
  else:
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1

  partno = partno + 1
  print "PART ", partno
  print "COMMENT: check coercion of Python list of objects to array"
  try:
    ArrayTest.ArrayOps.checkObject([ None, SIDL.BaseClass.BaseClass() ])
  except TypeError:
    print "RESULT", partno, "PASS"
    numpass = numpass + 1
  except:
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1
  else:
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1

  partno = partno + 1
  print "PART ", partno
  print "COMMENT: checking initially null boolean array"
  array1 = None
  array1 = ArrayTest.ArrayOps.makeInOutBool(array1, TEST_SIZE)
  if (ArrayTest.ArrayOps.checkBool(array1)):
    print "RESULT", partno, "PASS"
    numpass = numpass + 1
  else:
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1
             
  partno = partno + 1
  print "PART ", partno
  print "COMMENT: checking initially null character array"
  array1 = None
  array1 = ArrayTest.ArrayOps.makeInOutChar(array1, TEST_SIZE)
  if (ArrayTest.ArrayOps.checkChar(array1)):
    print "RESULT", partno, "PASS"
    numpass = numpass + 1
  else:
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1
             
  partno = partno + 1
  print "PART ", partno
  print "COMMENT: checking initially null integer array"
  array1 = None
  array1 = ArrayTest.ArrayOps.makeInOutInt(array1, TEST_SIZE)
  if (ArrayTest.ArrayOps.checkInt(array1)):
    print "RESULT", partno, "PASS"
    numpass = numpass + 1
  else:
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1
             
  partno = partno + 1
  print "PART ", partno
  print "COMMENT: checking initially null long array"
  array1 = None
  array1 = ArrayTest.ArrayOps.makeInOutLong(array1, TEST_SIZE)
  if (ArrayTest.ArrayOps.checkLong(array1)):
    print "RESULT", partno, "PASS"
    numpass = numpass + 1
  else:
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1
             
  partno = partno + 1
  print "PART ", partno
  print "COMMENT: checking initially null string array"
  array1 = None
  array1 = ArrayTest.ArrayOps.makeInOutString(array1, TEST_SIZE)
  if (ArrayTest.ArrayOps.checkString(array1)):
    print "RESULT", partno, "PASS"
    numpass = numpass + 1
  else:
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1
             
  partno = partno + 1
  print "PART ", partno
  print "COMMENT: checking initially null double array"
  array1 = None
  array1 = ArrayTest.ArrayOps.makeInOutDouble(array1, TEST_SIZE)
  if (ArrayTest.ArrayOps.checkDouble(array1)):
    print "RESULT", partno, "PASS"
    numpass = numpass + 1
  else:
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1
             
  partno = partno + 1
  print "PART ", partno
  print "COMMENT: checking initially null float array"
  array1 = None
  array1 = ArrayTest.ArrayOps.makeInOutFloat(array1, TEST_SIZE)
  if (ArrayTest.ArrayOps.checkFloat(array1)):
    print "RESULT", partno, "PASS"
    numpass = numpass + 1
  else:
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1
             
  partno = partno + 1
  print "PART ", partno
  print "COMMENT: checking initially null dcomplex array"
  array1 = None
  array1 = ArrayTest.ArrayOps.makeInOutDcomplex(array1, TEST_SIZE)
  if (ArrayTest.ArrayOps.checkDcomplex(array1)):
    print "RESULT", partno, "PASS"
    numpass = numpass + 1
  else:
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1
             
  partno = partno + 1
  print "PART ", partno
  print "COMMENT: checking initially null fcomplex array"
  array1 = None
  array1 = ArrayTest.ArrayOps.makeInOutFcomplex(array1, TEST_SIZE)
  if (ArrayTest.ArrayOps.checkFcomplex(array1)):
    print "RESULT", partno, "PASS"
    numpass = numpass + 1
  else:
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1
             
  partno = partno + 1
  print "PART ", partno
  print "COMMENT: checking initially null 2D integer array"
  array1 = None
  array1 = ArrayTest.ArrayOps.makeInOut2Int(array1, TEST_DIM1, TEST_DIM2)
  if (ArrayTest.ArrayOps.check2Int(array1)):
    print "RESULT", partno, "PASS"
    numpass = numpass + 1
  else:
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1
             
  partno = partno + 1
  print "PART ", partno
  print "COMMENT: checking initially null 2D double array"
  array1 = None
  array1 = ArrayTest.ArrayOps.makeInOut2Double(array1, TEST_DIM1, TEST_DIM2)
  if (ArrayTest.ArrayOps.check2Double(array1)):
    print "RESULT", partno, "PASS"
    numpass = numpass + 1
  else:
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1
             
  partno = partno + 1
  print "PART ", partno
  print "COMMENT: checking initially null 2D float array"
  array1 = None
  array1 = ArrayTest.ArrayOps.makeInOut2Float(array1, TEST_DIM1, TEST_DIM2)
  if (ArrayTest.ArrayOps.check2Float(array1)):
    print "RESULT", partno, "PASS"
    numpass = numpass + 1
  else:
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1
             
  partno = partno + 1
  print "PART ", partno
  print "COMMENT: checking initially null 2D dcomplex array"
  array1 = None
  array1 = ArrayTest.ArrayOps.makeInOut2Dcomplex(array1, TEST_DIM1, TEST_DIM2)
  if (ArrayTest.ArrayOps.check2Dcomplex(array1)):
    print "RESULT", partno, "PASS"
    numpass = numpass + 1
  else:
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1
             
  partno = partno + 1
  print "PART ", partno
  print "COMMENT: checking initially null 2D fcomplex array"
  array1 = None
  array1 = ArrayTest.ArrayOps.makeInOut2Fcomplex(array1, TEST_DIM1, TEST_DIM2)
  if (ArrayTest.ArrayOps.check2Fcomplex(array1)):
    print "RESULT", partno, "PASS"
    numpass = numpass + 1
  else:
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1
             
  partno = partno + 1
  print "PART ", partno
  print "COMMENT: checking initially null 3D integer array"
  array1 = None
  array1 = ArrayTest.ArrayOps.makeInOut3Int(array1)
  if (ArrayTest.ArrayOps.check3Int(array1)):
    print "RESULT", partno, "PASS"
    numpass = numpass + 1
  else:
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1
             
  partno = partno + 1
  print "PART ", partno
  print "COMMENT: checking initially null 4D integer array"
  array1 = None
  array1 = ArrayTest.ArrayOps.makeInOut4Int(array1)
  if (ArrayTest.ArrayOps.check4Int(array1)):
    print "RESULT", partno, "PASS"
    numpass = numpass + 1
  else:
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1
             

  partno = partno + 1
  print "PART ", partno
  print "COMMENT: checking ArrayOps::create2Double(-1,-1) returns None"
  if (ArrayTest.ArrayOps.create2Double(-1, -1)):
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1
  else:
    print "RESULT", partno, "PASS"
    numpass = numpass + 1



  partno = partno + 1
  print "PART ", partno
  print "COMMENT: checking ArrayOps::create2Fcomplex(-1,-1) returns None"
  if (ArrayTest.ArrayOps.create2Fcomplex(-1, -1)):
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1
  else:
    print "RESULT", partno, "PASS"
    numpass = numpass + 1



  partno = partno + 1
  print "PART ", partno
  print "COMMENT: checking ArrayOps::create2Dcomplex(-1,-1) returns None"
  if (ArrayTest.ArrayOps.create2Dcomplex(-1, -1)):
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1
  else:
    print "RESULT", partno, "PASS"
    numpass = numpass + 1



  partno = partno + 1
  print "PART ", partno
  print "COMMENT: checking ArrayOps::create2Float(-1,-1) returns None"
  if (ArrayTest.ArrayOps.create2Float(-1, -1)):
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1
  else:
    print "RESULT", partno, "PASS"
    numpass = numpass + 1



  partno = partno + 1
  print "PART ", partno
  print "COMMENT: checking ArrayOps::create2Int(-1,-1) returns None"
  if (ArrayTest.ArrayOps.create2Int(-1, -1)):
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1
  else:
    print "RESULT", partno, "PASS"
    numpass = numpass + 1


  partno = partno + 1
  print "PART ", partno
  print "COMMENT: checking ArrayOps::createLong(-1) returns None"
  if (ArrayTest.ArrayOps.createLong(-1)):
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1
  else:
    print "RESULT", partno, "PASS"
    numpass = numpass + 1
  partno = partno + 1
  print "PART ", partno
  print "COMMENT: checking ArrayOps::makeLong(-1) returns None"
  if (ArrayTest.ArrayOps.makeLong(-1)):
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1
  else:
    print "RESULT", partno, "PASS"
    numpass = numpass + 1



  partno = partno + 1
  print "PART ", partno
  print "COMMENT: checking ArrayOps::createDcomplex(-1) returns None"
  if (ArrayTest.ArrayOps.createDcomplex(-1)):
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1
  else:
    print "RESULT", partno, "PASS"
    numpass = numpass + 1
  partno = partno + 1
  print "PART ", partno
  print "COMMENT: checking ArrayOps::makeDcomplex(-1) returns None"
  if (ArrayTest.ArrayOps.makeDcomplex(-1)):
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1
  else:
    print "RESULT", partno, "PASS"
    numpass = numpass + 1



  partno = partno + 1
  print "PART ", partno
  print "COMMENT: checking ArrayOps::createFloat(-1) returns None"
  if (ArrayTest.ArrayOps.createFloat(-1)):
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1
  else:
    print "RESULT", partno, "PASS"
    numpass = numpass + 1
  partno = partno + 1
  print "PART ", partno
  print "COMMENT: checking ArrayOps::makeFloat(-1) returns None"
  if (ArrayTest.ArrayOps.makeFloat(-1)):
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1
  else:
    print "RESULT", partno, "PASS"
    numpass = numpass + 1



  partno = partno + 1
  print "PART ", partno
  print "COMMENT: checking ArrayOps::createDouble(-1) returns None"
  if (ArrayTest.ArrayOps.createDouble(-1)):
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1
  else:
    print "RESULT", partno, "PASS"
    numpass = numpass + 1
  partno = partno + 1
  print "PART ", partno
  print "COMMENT: checking ArrayOps::makeDouble(-1) returns None"
  if (ArrayTest.ArrayOps.makeDouble(-1)):
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1
  else:
    print "RESULT", partno, "PASS"
    numpass = numpass + 1



  partno = partno + 1
  print "PART ", partno
  print "COMMENT: checking ArrayOps::createInt(-1) returns None"
  if (ArrayTest.ArrayOps.createInt(-1)):
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1
  else:
    print "RESULT", partno, "PASS"
    numpass = numpass + 1
  partno = partno + 1
  print "PART ", partno
  print "COMMENT: checking ArrayOps::makeInt(-1) returns None"
  if (ArrayTest.ArrayOps.makeInt(-1)):
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1
  else:
    print "RESULT", partno, "PASS"
    numpass = numpass + 1



  partno = partno + 1
  print "PART ", partno
  print "COMMENT: checking ArrayOps::createFcomplex(-1) returns None"
  if (ArrayTest.ArrayOps.createFcomplex(-1)):
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1
  else:
    print "RESULT", partno, "PASS"
    numpass = numpass + 1
  partno = partno + 1
  print "PART ", partno
  print "COMMENT: checking ArrayOps::makeFcomplex(-1) returns None"
  if (ArrayTest.ArrayOps.makeFcomplex(-1)):
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1
  else:
    print "RESULT", partno, "PASS"
    numpass = numpass + 1



  partno = partno + 1
  print "PART ", partno
  print "COMMENT: checking ArrayOps::createString(-1) returns None"
  if (ArrayTest.ArrayOps.createString(-1)):
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1
  else:
    print "RESULT", partno, "PASS"
    numpass = numpass + 1
  partno = partno + 1
  print "PART ", partno
  print "COMMENT: checking ArrayOps::makeString(-1) returns None"
  if (ArrayTest.ArrayOps.makeString(-1)):
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1
  else:
    print "RESULT", partno, "PASS"
    numpass = numpass + 1



  partno = partno + 1
  print "PART ", partno
  print "COMMENT: checking ArrayOps::createBool(-1) returns None"
  if (ArrayTest.ArrayOps.createBool(-1)):
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1
  else:
    print "RESULT", partno, "PASS"
    numpass = numpass + 1
  partno = partno + 1
  print "PART ", partno
  print "COMMENT: checking ArrayOps::makeBool(-1) returns None"
  if (ArrayTest.ArrayOps.makeBool(-1)):
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1
  else:
    print "RESULT", partno, "PASS"
    numpass = numpass + 1



  partno = partno + 1
  print "PART ", partno
  print "COMMENT: checking ArrayOps::createChar(-1) returns None"
  if (ArrayTest.ArrayOps.createChar(-1)):
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1
  else:
    print "RESULT", partno, "PASS"
    numpass = numpass + 1
  partno = partno + 1
  print "PART ", partno
  print "COMMENT: checking ArrayOps::makeChar(-1) returns None"
  if (ArrayTest.ArrayOps.makeChar(-1)):
    print "RESULT", partno, "FAIL"
    numfail = numfail + 1
  else:
    print "RESULT", partno, "PASS"
    numpass = numpass + 1




  print "COMMENT:", numpass, "passes,", numfail, "fails, &", numxfail, "expected failures"
  if ((88 == (numpass + numfail + numxfail)) and
      (88 == (numpass))):
    print "TEST_RESULT PASS"
  else:
    if (88 == (numpass + numxfail)):
      print "TEST_RESULT XFAIL"
    else:
      print "TEST_RESULT FAIL"
0
