From 4a3befb835f759001db43f9c7059715ea0647a62 Mon Sep 17 00:00:00 2001 From: superstar54 Date: Thu, 31 Oct 2024 14:45:03 +0100 Subject: [PATCH] Update test --- docs/source/atoms/color.rst | 4 +-- src/atoms/AtomsViewer.js | 5 +++- src/atoms/atoms.js | 1 - tests/atoms.test.mjs | 26 ++++++++---------- .../Edit-Duplicate-Atoms-1-chromium-linux.png | Bin 27023 -> 32234 bytes tests/parserXYZ.test.mjs | 6 ++-- 6 files changed, 21 insertions(+), 21 deletions(-) diff --git a/docs/source/atoms/color.rst b/docs/source/atoms/color.rst index 16f9f49..46434fc 100644 --- a/docs/source/atoms/color.rst +++ b/docs/source/atoms/color.rst @@ -21,9 +21,9 @@ Supported style are: ----------------------------- -Custom color for each specie +Custom color for each species ----------------------------- -Use can set custom color for each specie. The color can be in the form of hex code or color name. +Use can set custom color for each species. The color can be in the form of hex code or color name. .. code-block:: javascript diff --git a/src/atoms/AtomsViewer.js b/src/atoms/AtomsViewer.js index 1338677..013d580 100644 --- a/src/atoms/AtomsViewer.js +++ b/src/atoms/AtomsViewer.js @@ -572,7 +572,10 @@ class AtomsViewer { addAtom(element, position = { x: 0, y: 0, z: 0 }) { // Remove the selected atoms from the scene and data const atom = new Atom(element, [position.x, position.y, position.z]); - this.atoms.addSpecie(element); + // if element is not in the species, add it to the species + if (!this.atoms.species[element]) { + this.atoms.addSpecie(element); + } this.atoms.addAtom(atom); // this.logger.debug("atoms: ", this.atoms); diff --git a/src/atoms/atoms.js b/src/atoms/atoms.js index 38409e7..a17c8e4 100644 --- a/src/atoms/atoms.js +++ b/src/atoms/atoms.js @@ -246,7 +246,6 @@ class Atoms { ...this.attributes["specie"][name], }; } - return result; } multiply(mx, my, mz) { diff --git a/tests/atoms.test.mjs b/tests/atoms.test.mjs index bf8c889..915dcea 100644 --- a/tests/atoms.test.mjs +++ b/tests/atoms.test.mjs @@ -1,32 +1,30 @@ -import { Species, Atom, Atoms } from "../dist/weas.mjs"; +import { Specie, Atom, Atoms } from "../dist/weas.mjs"; -describe("Species class", () => { - it("creates a new Species instance correctly", () => { - const species = new Species("C1", "C"); - expect(species.symbol).toBe("C1"); +describe("Specie class", () => { + it("creates a new Specie instance correctly", () => { + const species = new Specie("C"); expect(species.element).toBe("C"); expect(species.number).toBe(6); }); - it("creates a new Species use only symbol", () => { - const species = new Species("C"); - expect(species.symbol).toBe("C"); + it("creates a new Specie use only symbol", () => { + const species = new Specie("C"); expect(species.element).toBe("C"); expect(species.number).toBe(6); }); it("throws an error when adding an unknown species", () => { const value = "Unknown"; expect(() => { - const species = new Species("Unknown"); // This species does not exist in the atoms instance - }).toThrowError(`Element '${value}' is wrong.`); + const species = new Specie("Unknown"); // This species does not exist in the atoms instance + }).toThrowError(`Element '${value}' is invalid.`); }); }); describe("Atom class", () => { it("creates a new Atom instance correctly", () => { - const species = "H"; // Assuming this refers to an existing species + const symbol = "H"; // Assuming this refers to an existing symbol const position = [1.0, 2.0, 3.0]; - const atom = new Atom(species, position); - expect(atom.species).toBe(species); + const atom = new Atom(symbol, position); + expect(atom.symbol).toBe(symbol); expect(atom.position).toEqual(position); }); }); @@ -53,7 +51,7 @@ describe("Atoms class", () => { it("adds a species correctly", () => { atoms.addSpecie("H"); expect(atoms.species).toHaveProperty("H"); - expect(atoms.species["H"]).toEqual(new Species("H")); + expect(atoms.species["H"]).toEqual(new Specie("H")); }); // Add more tests for other methods like setCell, addAtom, removeAtom, etc. diff --git a/tests/e2e/gui.spec.js-snapshots/Edit-Duplicate-Atoms-1-chromium-linux.png b/tests/e2e/gui.spec.js-snapshots/Edit-Duplicate-Atoms-1-chromium-linux.png index e1063eff241e8cda6abaedefcf4bc6f04fd85907..1b5e2577c761a8a1b9d85807ce99dcd9df63bf26 100644 GIT binary patch literal 32234 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 { it("parses valid XYZ data correctly", () => { @@ -15,8 +15,8 @@ H 0.000000 0.757160 0.482080 expect(atoms).toBeDefined(); expect(atoms.species).toHaveProperty("H"); expect(atoms.species).toHaveProperty("O"); - expect(atoms.species["H"]).toEqual(new Species("H")); - expect(atoms.species["O"]).toEqual(new Species("O")); + expect(atoms.species["H"]).toEqual(new Specie("H")); + expect(atoms.species["O"]).toEqual(new Specie("O")); expect(atoms.positions.length).toBe(3); expect(atoms.symbols).toEqual(["O", "H", "H"]); console.log(atoms.positions[0]);