Browse Source

Re-enable struct tests

David Peter 1 year ago
parent
commit
75a6fb097d
3 changed files with 103 additions and 103 deletions
  1. 36 36
      examples/chemistry_tests.nbt
  2. 18 18
      examples/paper_size.nbt
  3. 49 49
      numbat/modules/chemistry/elements.nbt

+ 36 - 36
examples/chemistry_tests.nbt

@@ -6,43 +6,43 @@
 # - https://en.wikipedia.org/wiki/Ionization_energies_of_the_elements_(data_page)
 # - https://en.wikipedia.org/wiki/Enthalpy_of_vaporization
 
-# let w = element("tungsten")
-# assert(w.symbol == "W")
-# assert(w.name == "Tungsten")
-# assert_eq(w.atomic_number, 74)
-# assert_eq(w.group, 6)
-# assert_eq(w.period, 6)
-# assert_eq(w.melting_point, 3695 K, 20 K)
-# # assert_eq(w.boiling_point, 6203 K, 20 K)     # <-- this seems to be wrong in the `mendeleev` crate
-# assert_eq(w.density, 19.25 g/cm³, 0.1 g/cm³)
-# assert_eq(w.electron_affinity, 0.816 eV, 0.01 eV)
-# assert_eq(w.ionization_energy, 7.8640 eV, 0.2 eV)
-# assert_eq(w.vaporization_heat, 807 kJ/mol, 20 kJ/mol)
+let w = element("tungsten")
+assert(w.symbol == "W")
+assert(w.name == "Tungsten")
+assert_eq(w.atomic_number, 74)
+assert_eq(w.group, 6)
+assert_eq(w.period, 6)
+assert_eq(w.melting_point, 3695 K, 20 K)
+# assert_eq(w.boiling_point, 6203 K, 20 K)     # <-- this seems to be wrong in the `mendeleev` crate
+assert_eq(w.density, 19.25 g/cm³, 0.1 g/cm³)
+assert_eq(w.electron_affinity, 0.816 eV, 0.01 eV)
+assert_eq(w.ionization_energy, 7.8640 eV, 0.2 eV)
+assert_eq(w.vaporization_heat, 807 kJ/mol, 20 kJ/mol)
 
 
-# let chl = element("chlorine")
-# assert(chl.symbol == "Cl")
-# assert(chl.name == "Chlorine")
-# assert_eq(chl.atomic_number, 17)
-# assert_eq(chl.group, 17)
-# assert_eq(chl.period, 3)
-# assert_eq(chl.melting_point, 171.6 K, 1 K)
-# assert_eq(chl.boiling_point, 239.11 K, 1 K)
-# assert_eq(chl.density, 3.2 g/L, 0.1 g/L)
-# assert_eq(chl.electron_affinity, 3.612 eV, 0.01 eV)
-# assert_eq(chl.ionization_energy, 12.96764 eV, 0.01 eV)
-# assert_eq(chl.vaporization_heat, 20.4 kJ/mol, 0.1 kJ/mol)
+let chl = element("chlorine")
+assert(chl.symbol == "Cl")
+assert(chl.name == "Chlorine")
+assert_eq(chl.atomic_number, 17)
+assert_eq(chl.group, 17)
+assert_eq(chl.period, 3)
+assert_eq(chl.melting_point, 171.6 K, 1 K)
+assert_eq(chl.boiling_point, 239.11 K, 1 K)
+assert_eq(chl.density, 3.2 g/L, 0.1 g/L)
+assert_eq(chl.electron_affinity, 3.612 eV, 0.01 eV)
+assert_eq(chl.ionization_energy, 12.96764 eV, 0.01 eV)
+assert_eq(chl.vaporization_heat, 20.4 kJ/mol, 0.1 kJ/mol)
 
 
-# let rb = element("rubidium")
-# assert(rb.symbol == "Rb")
-# assert(rb.name == "Rubidium")
-# assert_eq(rb.atomic_number, 37)
-# assert_eq(rb.group, 1)
-# assert_eq(rb.period, 5)
-# assert_eq(rb.melting_point, 312.45 K, 0.3 K)
-# assert_eq(rb.boiling_point, 961 K, 0.3 K)
-# assert_eq(rb.density, 1.534 g/cm³, 0.01 g/cm³)
-# assert_eq(rb.electron_affinity, 0.485 eV, 0.02 eV)
-# assert_eq(rb.ionization_energy, 4.1771 eV, 0.01 eV)
-# assert_eq(rb.vaporization_heat, 75.8 kJ/mol, 0.1 kJ/mol)
+let rb = element("rubidium")
+assert(rb.symbol == "Rb")
+assert(rb.name == "Rubidium")
+assert_eq(rb.atomic_number, 37)
+assert_eq(rb.group, 1)
+assert_eq(rb.period, 5)
+assert_eq(rb.melting_point, 312.45 K, 0.3 K)
+assert_eq(rb.boiling_point, 961 K, 0.3 K)
+assert_eq(rb.density, 1.534 g/cm³, 0.01 g/cm³)
+assert_eq(rb.electron_affinity, 0.485 eV, 0.02 eV)
+assert_eq(rb.ionization_energy, 4.1771 eV, 0.01 eV)
+assert_eq(rb.vaporization_heat, 75.8 kJ/mol, 0.1 kJ/mol)

+ 18 - 18
examples/paper_size.nbt

@@ -2,27 +2,27 @@
 #
 # https://en.wikipedia.org/wiki/ISO_216
 
-# struct PaperSize {
-#     width: Length,
-#     height: Length,
-# }
+struct PaperSize {
+    width: Length,
+    height: Length,
+}
 
-# let size_A0 = PaperSize { width: 841 mm, height: 1189 mm }
+let size_A0 = PaperSize { width: 841 mm, height: 1189 mm }
 
-# fn paper_size_A(n: Scalar) -> PaperSize =
-#     PaperSize {
-#         width: floor(size_A0.width / 2^(n / 2)),
-#         height: floor(size_A0.height / 2^(n / 2)),
-#     }
+fn paper_size_A(n: Scalar) -> PaperSize =
+    PaperSize {
+        width: floor(size_A0.width / 2^(n / 2)),
+        height: floor(size_A0.height / 2^(n / 2)),
+    }
 
-# fn paper_area(size: PaperSize) -> Area =
-#     size.width * size.height
+fn paper_area(size: PaperSize) -> Area =
+    size.width * size.height
 
-# assert_eq(paper_size_A(3).width,  297 mm)
-# assert_eq(paper_size_A(3).height, 420 mm)
+assert_eq(paper_size_A(3).width,  297 mm)
+assert_eq(paper_size_A(3).height, 420 mm)
 
-# assert_eq(paper_size_A(4).width,  210 mm)
-# assert_eq(paper_size_A(4).height, 297 mm)
+assert_eq(paper_size_A(4).width,  210 mm)
+assert_eq(paper_size_A(4).height, 297 mm)
 
-# assert_eq(paper_size_A(5).width,  148 mm)
-# assert_eq(paper_size_A(5).height, 210 mm)
+assert_eq(paper_size_A(5).width,  148 mm)
+assert_eq(paper_size_A(5).height, 210 mm)

+ 49 - 49
numbat/modules/chemistry/elements.nbt

@@ -1,54 +1,54 @@
-# use units::si
+use units::si
 
-# struct _ChemicalElementRaw {
-#     symbol: String,
-#     name: String,
-#     atomic_number: Scalar,
-#     group: Scalar,
-#     group_name: String,
-#     period: Scalar,
-#     melting_point_kelvin: Scalar,
-#     boiling_point_kelvin: Scalar,
-#     density_gram_per_cm3: Scalar,
-#     electron_affinity_electronvolt: Scalar,
-#     ionization_energy_electronvolt: Scalar,
-#     vaporization_heat_kilojoule_per_mole: Scalar,
-# }
+struct _ChemicalElementRaw {
+    symbol: String,
+    name: String,
+    atomic_number: Scalar,
+    group: Scalar,
+    group_name: String,
+    period: Scalar,
+    melting_point_kelvin: Scalar,
+    boiling_point_kelvin: Scalar,
+    density_gram_per_cm3: Scalar,
+    electron_affinity_electronvolt: Scalar,
+    ionization_energy_electronvolt: Scalar,
+    vaporization_heat_kilojoule_per_mole: Scalar,
+}
 
-# fn _get_chemical_element_data_raw(pattern: String) -> _ChemicalElementRaw
+fn _get_chemical_element_data_raw(pattern: String) -> _ChemicalElementRaw
 
-# struct ChemicalElement {
-#     symbol: String,
-#     name: String,
-#     atomic_number: Scalar,
-#     group: Scalar,
-#     group_name: String,
-#     period: Scalar,
-#     melting_point: Temperature,
-#     boiling_point: Temperature,
-#     density: MassDensity,
-#     electron_affinity: Energy,
-#     ionization_energy: Energy,
-#     vaporization_heat: MolarEnthalpyOfVaporization,
-# }
+struct ChemicalElement {
+    symbol: String,
+    name: String,
+    atomic_number: Scalar,
+    group: Scalar,
+    group_name: String,
+    period: Scalar,
+    melting_point: Temperature,
+    boiling_point: Temperature,
+    density: MassDensity,
+    electron_affinity: Energy,
+    ionization_energy: Energy,
+    vaporization_heat: MolarEnthalpyOfVaporization,
+}
 
-# fn _convert_from_raw(raw: _ChemicalElementRaw) -> ChemicalElement =
-#     ChemicalElement {
-#         symbol: raw.symbol,
-#         name: raw.name,
-#         atomic_number: raw.atomic_number,
-#         group: raw.group,
-#         group_name: raw.group_name,
-#         period: raw.period,
-#         melting_point: raw.melting_point_kelvin * K,
-#         boiling_point: raw.boiling_point_kelvin * K,
-#         density: raw.density_gram_per_cm3 * g/cm³,
-#         electron_affinity: raw.electron_affinity_electronvolt * eV,
-#         ionization_energy: raw.ionization_energy_electronvolt * eV,
-#         vaporization_heat: raw.vaporization_heat_kilojoule_per_mole * kJ/mol,
-#     }
+fn _convert_from_raw(raw: _ChemicalElementRaw) -> ChemicalElement =
+    ChemicalElement {
+        symbol: raw.symbol,
+        name: raw.name,
+        atomic_number: raw.atomic_number,
+        group: raw.group,
+        group_name: raw.group_name,
+        period: raw.period,
+        melting_point: raw.melting_point_kelvin * K,
+        boiling_point: raw.boiling_point_kelvin * K,
+        density: raw.density_gram_per_cm3 * g/cm³,
+        electron_affinity: raw.electron_affinity_electronvolt * eV,
+        ionization_energy: raw.ionization_energy_electronvolt * eV,
+        vaporization_heat: raw.vaporization_heat_kilojoule_per_mole * kJ/mol,
+    }
 
-# @name("Chemical element")
-# @description("Get properties of a chemical element by its symbol or name (case-insensitive).")
-# fn element(pattern: String) -> ChemicalElement =
-#     _convert_from_raw(_get_chemical_element_data_raw(pattern))
+@name("Chemical element")
+@description("Get properties of a chemical element by its symbol or name (case-insensitive).")
+fn element(pattern: String) -> ChemicalElement =
+    _convert_from_raw(_get_chemical_element_data_raw(pattern))