Beispiel #1
0
def test_sort():
    random.seed(42)
    rvals = pgf.var_int()
    rkeys = pgf.var_int()
    rsorted = pgf.sort(rvals, rkeys)
    lvals = []
    lkeys = []
    for _ in range(10):
        nItems = random.randint(75, 155)
        vals = list(range(nItems))
        keys = list(range(nItems))
        random.shuffle(vals)
        random.shuffle(keys)
        lvals.append(vals)
        lkeys.append(keys)
        expected = [
            x for x, _ in sorted(zip(vals, keys), key=lambda pair: pair[1])
        ]

        pgf.assign(rvals, vals)
        pgf.assign(rkeys, keys)
        assert tu.equal(expected, pgf.read(rsorted))

    # Test the same with tree combinatorics.
    expected = [[x for x, _ in sorted(zip(v, k), key=lambda pair: pair[1])]
                for v, k in zip(lvals, lkeys)]
    pgf.assign(rvals, lvals)
    pgf.assign(rkeys, lkeys)
    assert tu.equal(expected, pgf.read(rsorted))
def test_heterogenousTrees():
    random.seed(42)
    vals1 = [[2], [3]]
    vals2 = [4, 5]
    expected = [[8, 10], [12, 15]]

    rvals1 = pgf.var_int(vals1)
    rvals2 = pgf.var_int(vals2)
    prod = pgf.mul(rvals1, rvals2)
    assert tu.equal(expected, pgf.read(prod))
def test_itemListMapping():
    random.seed(42)
    singleval = 42
    single = pgf.var_int(singleval)
    lst = pgf.var_int()
    out = pgf.add(single, lst)
    for _ in range(10):
        vals = list(range(12))
        random.shuffle(vals)
        expected = [singleval + v for v in vals]

        pgf.assign(lst, vals)
        assert tu.equal(expected, pgf.read(out))
Beispiel #4
0
def test_seriesInt():
    random.seed(42)
    valrange = (23, 256)
    steprange = (2, 9)
    valstart = random.randint(valrange[0], valrange[1])
    valstep = random.randint(steprange[0], steprange[1])
    valcount = random.randint(valrange[0], valrange[1])
    valstop = valstart + valstep * valcount

    start = pgf.var_int(valstart)
    step = pgf.var_int(valstep)
    count = pgf.var_int(valcount)
    series = pgf.series(start, step, count)

    assert tu.equal(range(valstart, valstop, valstep), pgf.read(series))
Beispiel #5
0
def test_combinations():
    random.seed(42)
    valrange = (23, 345)
    rvals = pgf.var_int()
    rnumc = pgf.var_int()
    rcombs = pgf.combinations(rvals, rnumc)
    for _ in range(5):
        nItems = random.randint(23, 29)
        numc = random.randint(3, 5)
        vals = [
            random.randint(valrange[0], valrange[1]) for _ in range(nItems)
        ]
        combs = list(itertools.combinations(vals, numc))

        pgf.assign(rvals, vals)
        pgf.assign(rnumc, numc)
        assert tu.equal(combs, pgf.read(rcombs))
Beispiel #6
0
def repeatGenericTest(val, pgvarfn, comparefn):
    random.seed(42)
    count = random.randint(23, 345)
    vals = [val for _ in range(count)]

    rval = pgvarfn(val)
    result = pgf.repeat(rval, pgf.var_int(count))

    assert comparefn(vals, pgf.read(result))
Beispiel #7
0
def test_listSumInt():
    random.seed(42)
    valrange = (23, 345)
    vals = [random.randint(valrange[0], valrange[1]) for _ in range(25)]

    lst = pgf.var_int(vals)
    result = pgf.listSum(lst)

    assert tu.equal(sum(vals), pgf.read(result))
def test_treeInputs():
    random.seed(42)
    vals = [[random.randint(23, 345) for _ in range(10)] for _ in range(10)]
    rvals = pgf.var_int()
    rsum = pgf.treeSum(rvals)
    expected = sum([sum(v) for v in vals])

    pgf.assign(rvals, vals)
    assert tu.equal(expected, pgf.read(rsum))
Beispiel #9
0
def listItemGenericTest(vals, pgvarfn, comparefn):
    rvals = pgvarfn(vals)
    rindex = pgf.var_int()
    result = pgf.listItem(rvals, rindex)

    random.seed(42)
    for _ in range(25):
        index = random.randint(0, len(vals) - 1)
        pgf.assign(rindex, index)
        assert comparefn(vals[index], pgf.read(result))
Beispiel #10
0
def test_listLength():
    random.seed(42)
    valrange = (23, 345)
    rvals = pgf.var_int()
    rstart = pgf.var_int()
    rstop = pgf.var_int()
    slist = pgf.subList(rvals, rstart, rstop)
    for _ in range(20):
        vals = [random.randint(valrange[0], valrange[1]) for _ in range(25)]
        irange = (random.randint(0,
                                 len(vals) - 1),
                  random.randint(0,
                                 len(vals) - 1))
        irange = sorted(irange)
        expected = vals[irange[0]:irange[1]]
        # print(len(vals), irange[0], irange[1])
        pgf.assign(rvals, vals)
        pgf.assign(rstart, irange[0])
        pgf.assign(rstop, irange[1])
        tu.assertEqual(expected, pgf.read(slist))
Beispiel #11
0
def binaryIntOpTest(expFn, pgfn, minval=2, maxval=124):
    random.seed(42)
    a = pgf.var_int()
    b = pgf.var_int()
    r = pgfn(a, b)

    for _ in range(20):
        va = random.randint(minval, maxval)
        vb = random.randint(minval, maxval)
        expected = expFn(va, vb)
        pgf.assign(a, va)
        pgf.assign(b, vb)
        assert tu.equal(expected, pgf.read(r))

    vas = [random.randint(minval, maxval) for _ in range(20)]
    vbs = [random.randint(minval, maxval) for _ in range(20)]
    expectedVals = [expFn(va, vb) for va, vb in zip(vas, vbs)]
    pgf.assign(a, vas)
    pgf.assign(b, vbs)
    assert tu.equal(expectedVals, pgf.read(r))
Beispiel #12
0
def test_flatten():
    random.seed(42)
    intree = pgf.var_int()
    outtree = pgf.flatten(intree)
    for _ in range(5):
        vals = [[random.randint(23, 234)] for __ in range(10)]
        pgf.assign(intree, vals)
        expected = [item for subl in vals for item in subl]
        assert tu.equal(expected, pgf.read(outtree))
        vals = [[[random.randint(23, 234) for __ in range(5)]
                 for ___ in range(5)] for _____ in range(5)]
        pgf.assign(intree, vals)
        expected = [item for l0 in vals for l1 in l0 for item in l1]
        assert tu.equal(expected, pgf.read(outtree))
Beispiel #13
0
def test_graft():
    random.seed(42)
    intree = pgf.var_int()
    out = pgf.graft(intree)
    for _ in range(5):
        vals = [random.randint(23, 345) for __ in range(10)]
        expected = [[v] for v in vals]
        pgf.assign(intree, vals)
        assert tu.equal(expected, pgf.read(out))
    for _ in range(5):
        vals = [[random.randint(23, 345) for __ in range(5)]
                for ___ in range(5)]
        expected = [[[v] for v in vl] for vl in vals]
        pgf.assign(intree, vals)
        assert tu.equal(expected, pgf.read(out))
Beispiel #14
0
def test_seriesFloat():
    random.seed(42)
    valrange = (22.345, 223.66)
    steprange = (1.778, 9.56)
    valstart = random.uniform(valrange[0], valrange[1])
    valstep = random.uniform(steprange[0], steprange[1])
    valcount = random.randint(25, 98)
    valstop = valstart + valstep * valcount

    start = pgf.var_float(valstart)
    step = pgf.var_float(valstep)
    count = pgf.var_int(valcount)
    series = pgf.series(start, step, count)

    expected = [(valstart + i * valstep) for i in range(valcount)]
    tu.assertEqualf(expected, pgf.read(series), 1e-3)
Beispiel #15
0
def test_cachedOffsetDataRegression():
    # This tests for a regression (lack of) happened while working on PR # 53.
    pt = pgf.var_vec3((0., 0., 0.))
    norm = pgf.var_vec3((0., 0., 1.))
    plane = pgf.plane(pt, norm)
    minpt = pgf.var_vec3((-.5, -.5, 0.))
    maxpt = pgf.var_vec3((.5, .5, 0.))
    box2 = pgf.box2(pgf.var_vec2((-.5, -.5)), pgf.var_vec2((.5, .5)))
    box3 = pgf.box3(minpt, maxpt)
    npts = pgf.var_int(4)
    cloud = pgf.randomPointsInBox(box3, npts)
    edgeLen = pgf.var_float(1)
    rect = pgf.rectangleMesh(plane, box2, edgeLen)
    distances = pgf.distance(pgf.graft(pgf.vertices(rect)), cloud)
    pdists = pgf.read(pgf.flatten(distances))
    assert len(pdists) == 16
Beispiel #16
0
def test_dispatch():
    random.seed(42)
    valrange = (23, 345)
    rvals = pgf.var_int()
    rpattern = pgf.var_bool()
    rtvals, rfvals = pgf.dispatch(rvals, rpattern)
    for _ in range(20):
        nItems = 25
        vals = [
            random.randint(valrange[0], valrange[1]) for _ in range(nItems)
        ]
        pattern = [
            random.randint(valrange[0], valrange[1]) % 2 == 0
            for _ in range(nItems)
        ]
        tvals = [v for v, p in zip(vals, pattern) if p]
        fvals = [v for v, p in zip(vals, pattern) if not p]

        pgf.assign(rvals, vals)
        pgf.assign(rpattern, pattern)
        assert tu.equal(tvals, pgf.read(rtvals))
        assert tu.equal(fvals, pgf.read(rfvals))
pt = pgf.var_vec3((0., 0., 0.))
norm = pgf.var_vec3((0., 0., 1.))
plane = pgf.plane(pt, norm)
minpt = pgf.var_vec3((-.5, -.5, 0.))
maxpt = pgf.var_vec3((.5, .5, 0.))
box2 = pgf.box2(pgf.var_vec2((-.5, -.5)), pgf.var_vec2((.5, .5)))
box3 = pgf.box3(minpt, maxpt)
npts = pgv.slideri32("Point count", 5, 50, 25)
cloud = pgf.randomPointsInBox(box3, npts)

edgeLen = pgf.var_float(.01)
rect = pgf.rectangleMesh(plane, box2, edgeLen)

distances = pgf.distance(pgf.graft(pgf.vertices(rect)), cloud)
sortedDists = pgf.sort(distances, distances)
maxDist = pgf.listItem(sortedDists,
                       pgf.sub(pgf.listLength(sortedDists), pgf.var_int(1)))

scheme = pgf.var_vec3([(0., 0., 1.), (0., 1., 0.), (1., 1., 0.), (1., 0., 0.)])
colors = pgf.mapValueToColor(maxDist, pgf.var_vec2((.5, 1.2)), scheme)
colored = pgf.meshWithVertexColors(rect, colors)

circ, *_ = pgf.boundingCircle(cloud)

# pgv.show("rectangle", rect)
pgv.show("cloud", cloud)
pgv.show("colored", colored)
pgv.show("circle", circ)

pgv.runCommands("2d")
Beispiel #18
0
    (1, 1, 0),
    (-.3, 1, 0),
    (0, -1, 0),
]

GLYPHDATA = [
    "/home/rnjth94/works/YouTube/GAL_BoundingCircle/receiverDishGlyph.png",
    "/home/rnjth94/works/YouTube/GAL_BoundingCircle/transmitterGlyph.png"
]


def initGlyphs():
    return pgv.loadGlyphs(GLYPHDATA)


if __name__ == "__main__":
    glyphs = initGlyphs()
    pts = pgf.var_vec3(POINTS)
    cloudGlyphs = pgf.var_int([glyphs[0] for _ in range(len(POINTS))])
    idxPt = pgf.listItem(pts, pgv.slideri32("Index", 0, len(POINTS) - 1, 0))
    circ, center, radius = pgf.boundingCircle(pts)
    center3 = pgf.vec3FromVec2(center)
    centerGlyph = pgf.var_int(glyphs[1])

    pgv.show("glyph1", pgv.glyphs(cloudGlyphs, pts))
    pgv.show("glyph2", pgv.glyphs(centerGlyph, center3))
    pgv.show("circle", circ)
    pgv.show("points", pts)
    pgv.show("center", center3)
    pgv.print("Point at index", idxPt)
Beispiel #19
0
pt = pgf.var_vec3((0., 0., 0.))
norm = pgf.var_vec3((0., 0., 1.))
plane = pgf.plane(pt, norm)
minpt = pgf.var_vec3((-.5, -.5, 0.))
maxpt = pgf.var_vec3((.5, .5, 0.))
box2 = pgf.box2(pgf.var_vec2((-.5, -.5)), pgf.var_vec2((.5, .5)))
box3 = pgf.box3(minpt, maxpt)
npts = pgv.slideri32("Point count", 5, 50, 25)
cloud = pgf.randomPointsInBox(box3, npts)

edgeLen = pgf.var_float(.01)
rect = pgf.rectangleMesh(plane, box2, edgeLen)

distances = pgf.distance(pgf.graft(pgf.vertices(rect)), cloud)
sortedDists = pgf.sort(distances, distances)
maxDist = pgf.listItem(sortedDists, pgf.sub(pgf.listLength(sortedDists), pgf.var_int(1)))

scheme = pgf.var_vec3([
    (0., 0., 1.),
    (0., 1., 0.),
    (1., 1., 0.),
    (1., 0., 0.)
])
colors = pgf.mapValueToColor(maxDist, pgf.var_vec2((.5, 1.2)), scheme)
colored = pgf.meshWithVertexColors(rect, colors)

circ, *_ = pgf.boundingCircle(cloud)

# pgv.show("rectangle", rect)
pgv.show("cloud", cloud)
pgv.show("colored", colored)
Beispiel #20
0
import pygalfunc as pgf
import pygalview as pgv

POINTS = [
    (0, 0, 0),
    (1, 0, 0),
    (1, 1, 0),
    (-.3, 1, 0),
    (0, -1, 0),
]

pts = pgf.var_vec3(POINTS)
nums = pgf.toString(pgf.series(pgf.var_int(0), pgf.var_int(1), pgf.listLength(pts)))
idxPt = pgf.listItem(pts, pgv.slideri32("Index", 0, len(POINTS) - 1, 0))
circ, *_ = pgf.boundingCircle(pts)

pgv.show("indices", pgv.tags(nums, pts))
pgv.show("circle", circ)
pgv.show("points", pts)
pgv.print("Point at index", idxPt)