package main

import "testing"

func _test_NumberOfAtoms(t *testing.T, input, expected string) {
	result := countOfAtoms(input)
	if result != expected {
		t.Errorf("Expected ‹%s› for ‹%s›, but got: ‹%s›!", expected, input, result)
	}
}

func Test_NumberOfAtoms_Easy(t *testing.T) {
	_test_NumberOfAtoms(t, "H2", "H2")
	_test_NumberOfAtoms(t, "O2", "O2")
	_test_NumberOfAtoms(t, "HO", "HO")
	_test_NumberOfAtoms(t, "H2O", "H2O")
	_test_NumberOfAtoms(t, "H2SO4", "H2O4S")
}

func Test_NumberOfAtoms_Medium(t *testing.T) {
	_test_NumberOfAtoms(t, "Mg(OH)2", "H2MgO2")
	_test_NumberOfAtoms(t, "C6H5OH", "C6H6O")
	_test_NumberOfAtoms(t, "C6H5CH3", "C7H8")
}

func Test_NumberOfAtoms_Hard(t *testing.T) {
	_test_NumberOfAtoms(t, "K4(ON(SO3)2)2", "K4N2O14S4")
}