Fantom

 

//
// Copyright (c) 2011, Brian Frank and Andy Frank
// Licensed under the Academic Free License version 3.0
//
// History:
//   22 Oct 11  Brian Frank  Creation
//

class BoolArrayTest : Test
{

  Void testBits()
  {
    (0..<1000).each |i| { verifyBits(i) }
  }

  Void verifyBits(Int index)
  {
    a := BoolArray(1000)
    a[index] = true
    (0..<1000).each |i| { verifyEq(a[i], i==index) }

    a.fill(true)
    a[index] = false
    (0..<1000).each |i| { verifyEq(a[i], i!=index) }
  }

  Void testBitsCombo()
  {
    verifyBitCombo(2,   [1])
    verifyBitCombo(3,   [0,2])
    verifyBitCombo(100, [0, 17, 32, 63, 99])
    verifyBitCombo(100, [2, 17, 33, 64, 77])
    verifyBitCombo(100, [30, 32, 33, 35, 64, 63])
  }

  Void verifyBitCombo(Int size, Int[] indices)
  {
    a := BoolArray(size)
    indices.each |i| { a[i] = true }
    verifyEq(a.size, size)
    (0..<size).each |i| { verifyEq(a[i], indices.contains(i)) }

    c := BoolArray(size * 2)
    c.copyFrom(a)
    (0..<size).each |i| { verifyEq(c[i], indices.contains(i)) }
    (size..<c.size).each |i| { verifyEq(c[i], false) }
  }

}