def test_same_from_afar(self):
		gen_data.singular('5.0')

		print "Test 2: Conserves Energy"
		acceptable_error = 0.01

		user_pos = np.array([0, 10])
		user_mass = 1.0
		user_charge = 1.0
		ring_radius = 0

		user_vel = np.array([0, 0])

		my_ring = electron.Ring(ring_radius)
		my_ring.ReadChargeDist('singulardist.csv')

		Estimator.my_ring = my_ring

		user_vel = np.array([0, 0])
		user_accel = electron.CalculateForce(user_charge, user_pos, my_ring)
		
		my_particle = electron.Particle(user_mass, user_charge, user_pos, user_vel, user_accel)

		my_state = electron.State(my_particle, 0)
		my_system = electron.System(my_state)

		final_pos, final_vel = electron.run_simulation(my_system, 100, "test2.csv")
		print Coulomb_k*(my_ring.charge_density[0])*user_charge*(1.0/np.linalg.norm(user_pos) - 1.0/np.linalg.norm(final_pos)) - 0.5*user_mass*np.linalg.norm(final_vel)**2
		#final_pos, final_vel = run_simution(user_mass, user_charge, user_pos, user_vel, ring_radius, angle, value, 10)
		self.assertTrue(math.fabs(Coulomb_k*(my_ring.charge_density[0])*user_charge*(1.0/np.linalg.norm(user_pos) - 1.0/np.linalg.norm(final_pos)) - 0.5*user_mass*np.linalg.norm(final_vel)**2) < 0.1)
	def test_completes_the_circle(self):
		gen_data.singular('5.0')

		print "Test 1: complete the circle"
		acceptable_rmse = 0.01

		user_pos = np.array([0, 1.5])
		user_mass = 1
		user_charge = 1
		ring_radius = 0

		my_ring = electron.Ring(ring_radius)
		my_ring.ReadChargeDist('singulardist.csv')

		Estimator.dt = 0.001
		Estimator.my_ring = my_ring

		user_vel = np.array([math.sqrt(Coulomb_k*user_charge*my_ring.charge_density[0]/np.linalg.norm(user_pos)/user_mass), 0])

		time_limit = 2.0*math.pi*np.linalg.norm(user_pos)/np.linalg.norm(user_vel)/Estimator.dt

		user_accel = electron.CalculateForce(user_charge, user_pos, my_ring)
		my_particle = electron.Particle(user_mass, user_charge, user_pos, user_vel, user_accel)

		my_state = electron.State(my_particle, 0)
		my_system = electron.System(my_state)

		final_pos, final_vel = electron.run_simulation(my_system, int(time_limit), "test1.csv")

		# Expect final position to equal first position.
		print np.linalg.norm(final_pos - user_pos)

		self.assertTrue(np.linalg.norm(final_pos - user_pos) < acceptable_rmse)