aboutsummaryrefslogtreecommitdiff
path: root/src/physics/electricField.test.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/physics/electricField.test.ts')
-rw-r--r--src/physics/electricField.test.ts21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/physics/electricField.test.ts b/src/physics/electricField.test.ts
new file mode 100644
index 0000000..2e01309
--- /dev/null
+++ b/src/physics/electricField.test.ts
@@ -0,0 +1,21 @@
+import { describe, expect, it } from 'vitest';
+import { electricField, COULOMB_CONSTANT } from './electricField';
+
+describe('Coulomb electric field', () => {
+ it('points away from a positive charge with inverse-square magnitude', () => {
+ const field = electricField({ x: 2, y: 0, z: 0 }, [{ x: 0, y: 0, z: 0, coulombs: 1e-9 }]);
+ expect(field.x).toBeCloseTo(COULOMB_CONSTANT * 1e-9 / 4);
+ expect(field.y).toBe(0);
+ expect(field.z).toBe(0);
+ });
+ it('superposes opposite charges in the same direction at the midpoint', () => {
+ const field = electricField({ x: 0, y: 0, z: 0 }, [
+ { x: -1, y: 0, z: 0, coulombs: 1e-9 },
+ { x: 1, y: 0, z: 0, coulombs: -1e-9 },
+ ]);
+ expect(field.x).toBeCloseTo(2 * COULOMB_CONSTANT * 1e-9);
+ });
+ it('omits singular samples within the visualization exclusion radius', () => {
+ expect(electricField({ x: 0, y: 0, z: 0 }, [{ x: 0, y: 0, z: 0, coulombs: 1e-9 }])).toEqual({ x: 0, y: 0, z: 0 });
+ });
+});