Folder full of pertinent coursework
from juliaset import JuliaSet1from random import uniform, randint2from math import sqrt3from nose import with_setup45###6# Test Suite for specified JuliaSet interface7#8# Run with the command: "nosetests juliatests.py"9###101112# Custom random numbers1314def rand_range():15"""Return a random complex number bounded by real and imaginary axes [-2, 2]"""16return (uniform(-2,2) + uniform(-2,2)*1j)1718def rand_circle():19"""Return a random complex number within the unit circle"""20r = uniform(-1,1)21dr = sqrt(1 - r**2)22i = uniform(-dr, dr)23return (r + i*1j)2425# Test classes for several cases2627class TestRandomC:28"""Define a julia set with a random c seed value, test interface"""2930def setup(self):31"""Setup fixture is run before every test method separately"""32self.c = rand_range()33self.n = randint(2,100)34self.j = JuliaSet(self.c, self.n)3536def test_c_value(self):37"""Test that c is an attribute"""38assert self.j.c == self.c3940def test_n_value(self):41"""Test that n is an attribute"""42assert self.j.n == self.n4344def test_juliamap(self):45"""Test that juliamap is implemented properly"""46z = rand_range()47print "z = ", z48print "z**2 = ", z**249zcorrect = z**2 + self.c50print "z**2 + c = ", zcorrect51znew = self.j.juliamap(z)52print "juliamap(z) = ", znew53assert znew == zcorrect5455def test_set_spacing(self):56"""Test that changing spacing works"""57print "Test original spacing _d = 0.001"58assert self.j._d == 0.00159print "Test new spacing of _d = 0.1"60self.j.set_spacing(0.1)61print "_d = ", self.j._d62assert self.j._d == 0.163print "Test that complex plane is regenerated"64print "len(_complexplane) = ", len(self.j._complexplane)65print "int(4.0 / 0.1)**2 = ", int(4.0 / 0.1)**266assert len(self.j._complexplane) == int(4.0 / 0.1)**26768def test_generate(self):69"""Test that generating the julia set works"""70self.j.set_spacing(0.1)71self.j.generate()72print "Test that j.set exists, and is of the same length as j._complexplane"73assert (len(self.j.set) == len(self.j._complexplane))7475class TestTrivial:76"""Test that a seed value of c=0 leaves the unit circle invariant"""7778@classmethod79def setup_class(cls):80cls.j = JuliaSet(0)8182def test_trivial_seed(self):83def check_z(z):84"""Test all z inside unit circle return 0"""85m = TestTrivial.j.iterate(z)86print "m = ", m87assert m == 088# A generator like this runs a test for every yield89for _ in xrange(100):90z = rand_circle()91yield check_z, z9293class TestHuge:94"""Test that a huge seed always causes a divergence after 1 iteration"""9596@classmethod97def setup_class(cls):98cls.j = JuliaSet(16)99100def test_huge_seed(self):101def check_z(z):102"""Test all z escape after 1 iteration"""103print "z = ", z104print "z**2 = ", z**2105print "z**2 + c = ", z**2 + 16106print "juliamap(z) = ", TestHuge.j.juliamap(z)107assert TestHuge.j.iterate(z) == 1108# Again, a generator runs a test for every yield109for _ in xrange(100):110z = rand_range()111yield check_z, z112113114115