svoid test_QuadTreeBitMatrix() { // 4*4, one pixel white BitSetMatrix m = new(4, 4); m.set(1, 1); QuadTreeBitMatrix qd = bitMatrixToQuadTree(m); assertTrueVerbose(equal := eqMatrices(m, qd)); assertEqualsVerbose(2, qd.compositeNodeCount()); // turn pixel back to black qd.set(1, 1, false); m.set(1, 1, false); assertTrueVerbose(equal := eqMatrices(m, qd)); print(structure(qd)); qd.set(1, 1, false); print(structure(qd)); assertEqualsVerbose(0, qd.compositeNodeCount()); test_QuadTreeBitMatrix_2(); } svoid test_QuadTreeBitMatrix_2() { for (double p = .1; p < 1; p += .1) { new Average nodes; repeat 100 { var matrix = randomBitMatrix(8, 8, p); QuadTreeBitMatrix qt = bitMatrixToQuadTree(matrix); nodes.add(qt.compositeNodeCount()); assertTrueVerbose(eqMatrices(matrix, qt)); } printVars(+p, +nodes); } }