Source code for pymcxray.test_Simulation

#!/usr/bin/env python
# -*- coding: utf-8 -*-

"""
.. py:currentmodule:: test_Simulation
.. moduleauthor:: Hendrix Demers <hendrix.demers@mail.mcgill.ca>

Tests for the module `Simulation`.
"""

###############################################################################
# Copyright 2017 Hendrix Demers
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
###############################################################################

# Standard library modules.
import unittest

# Third party modules.

# Local modules.

# Project modules
# import pymcxray.Simulation as Simulation
from pymcxray.Simulation import create_weight_fractions, create_weight_fractions_trace
from pymcxray.Simulation import Layer, create_multi_horizontal_layer

# Globals and constants variables.


[docs]class TestSimulation(unittest.TestCase): """ TestCase class for the module `Simulation`. """
[docs] def setUp(self): """ Setup method. """ unittest.TestCase.setUp(self)
[docs] def tearDown(self): """ Teardown method. """ unittest.TestCase.tearDown(self)
[docs] def testSkeleton(self): """ First test to check if the testcase is working with the testing framework. """ # self.fail("Test if the testcase is working.") self.assert_(True)
[docs] def test_create_weight_fractions(self): """ """ weight_fraction_ref = [0, 0.25, 0.5, 0.75, 1.0] weight_fraction_values = create_weight_fractions(0.25, 1) self.assertListEqual(weight_fraction_ref, list(weight_fraction_values)) weight_fraction_ref = [(0.0, 1.0), (0.25, 0.75), (0.5, 0.5), (0.75, 0.25), (1.0, 0.0)] weight_fraction_values = create_weight_fractions(0.25, 2) self.assertListEqual(weight_fraction_ref, weight_fraction_values) weight_fraction_ref = [(0.0, 0.0, 1.0), (0.0, 0.25, 0.75), (0.0, 0.5, 0.5), (0.0, 0.75, 0.25), (0.0, 1.0, 0.0), (0.25, 0.0, 0.75), (0.25, 0.25, 0.5), (0.25, 0.5, 0.25), (0.25, 0.75, 0.0), (0.5, 0.0, 0.5), (0.5, 0.25, 0.25), (0.5, 0.5, 0.0), (0.75, 0.0, 0.25), (0.75, 0.25, 0.0), (1.0, 0.0, 0.0)] weight_fraction_values = create_weight_fractions(0.25, 3) self.assertListEqual(weight_fraction_ref, weight_fraction_values) weight_fraction_ref = [(0.0, 0.0, 0.0, 1.0), (0.0, 0.0, 0.25, 0.75), (0.0, 0.0, 0.5, 0.5), (0.0, 0.0, 0.75, 0.25), (0.0, 0.0, 1.0, 0.0), (0.0, 0.25, 0.0, 0.75), (0.0, 0.25, 0.25, 0.5), (0.0, 0.25, 0.5, 0.25), (0.0, 0.25, 0.75, 0.0), (0.0, 0.5, 0.0, 0.5), (0.0, 0.5, 0.25, 0.25), (0.0, 0.5, 0.5, 0.0), (0.0, 0.75, 0.0, 0.25), (0.0, 0.75, 0.25, 0.0), (0.0, 1.0, 0.0, 0.0), (0.25, 0.0, 0.0, 0.75), (0.25, 0.0, 0.25, 0.50), (0.25, 0.0, 0.50, 0.25), (0.25, 0.0, 0.75, 0.0), (0.25, 0.25, 0.0, 0.50), (0.25, 0.25, 0.25, 0.25), (0.25, 0.25, 0.50, 0.0), (0.25, 0.5, 0.0, 0.25), (0.25, 0.5, 0.25, 0.0), (0.25, 0.75, 0.0, 0.0), (0.50, 0.0, 0.0, 0.50), (0.50, 0.0, 0.25, 0.25), (0.50, 0.0, 0.50, 0.0), (0.50, 0.25, 0.0, 0.25), (0.50, 0.25, 0.25, 0.0), (0.50, 0.50, 0.0, 0.0), (0.75, 0.0, 0.0, 0.25), (0.75, 0.0, 0.25, 0.0), (0.75, 0.25, 0.0, 0.0), (1.0, 0.0, 0.0, 0.0)] weight_fraction_values = create_weight_fractions(0.25, 4) self.assertListEqual(weight_fraction_ref, weight_fraction_values) weight_fraction_ref = [(0.0, 1.0), (0.5, 0.5), (1.0, 0.0)] weight_fraction_values = create_weight_fractions(0.50, 2) self.assertListEqual(weight_fraction_ref, weight_fraction_values) weight_fraction_ref = [(0.0, 0.0, 1.0), (0.0, 0.5, 0.5), (0.0, 1.0, 0.0), (0.5, 0.0, 0.5), (0.5, 0.5, 0.0), (1.0, 0.0, 0.0)] weight_fraction_values = create_weight_fractions(0.50, 3) self.assertListEqual(weight_fraction_ref, weight_fraction_values) weight_fraction_ref = [(0.0, 0.0, 0.0, 1.0), (0.0, 0.0, 0.5, 0.5), (0.0, 0.0, 1.0, 0.0), (0.0, 0.5, 0.0, 0.5), (0.0, 0.5, 0.5, 0.0), (0.0, 1.0, 0.0, 0.0), (0.50, 0.0, 0.0, 0.50), (0.50, 0.0, 0.50, 0.0), (0.50, 0.50, 0.0, 0.0), (1.0, 0.0, 0.0, 0.0)] weight_fraction_values = create_weight_fractions(0.50, 4) self.assertListEqual(weight_fraction_ref, weight_fraction_values)
# self.fail("Test if the testcase is working.")
[docs] def test_create_weight_fractions_trace(self): """ """ weight_fraction_ref = [0, 0.25] weight_fraction_values = create_weight_fractions_trace(0.25, 1, 0, 0.25) self.assertListEqual(weight_fraction_ref, list(weight_fraction_values)) weight_fraction_ref = [(0.0, 1.0), (0.25, 0.75)] weight_fraction_values = create_weight_fractions_trace(0.25, 2, 0, 0.25) self.assertListEqual(weight_fraction_ref, weight_fraction_values) weight_fraction_ref = [(0.0, 0.0, 1.0), (0.0, 0.25, 0.75), (0.25, 0.0, 0.75), (0.25, 0.25, 0.5)] weight_fraction_values = create_weight_fractions_trace(0.25, 3, 0, 0.25) self.assertListEqual(weight_fraction_ref, weight_fraction_values) weight_fraction_ref = [(0.0, 0.0, 0.0, 1.0), (0.0, 0.0, 0.25, 0.75), (0.0, 0.25, 0.0, 0.75), (0.0, 0.25, 0.25, 0.5), (0.25, 0.0, 0.0, 0.75), (0.25, 0.0, 0.25, 0.50), (0.25, 0.25, 0.0, 0.50), (0.25, 0.25, 0.25, 0.25)] weight_fraction_values = create_weight_fractions_trace(0.25, 4, 0, 0.25) self.assertListEqual(weight_fraction_ref, weight_fraction_values) weight_fraction_ref = [(0.0, 1.0)] weight_fraction_values = create_weight_fractions_trace(0.50, 2, 0, 0.25) self.assertListEqual(weight_fraction_ref, weight_fraction_values) weight_fraction_ref = [(0.0, 0.0, 1.0)] weight_fraction_values = create_weight_fractions_trace(0.50, 3, 0, 0.25) self.assertListEqual(weight_fraction_ref, weight_fraction_values) weight_fraction_ref = [(0.0, 0.0, 0.0, 1.0)] weight_fraction_values = create_weight_fractions_trace(0.50, 4, 0, 0.25) self.assertListEqual(weight_fraction_ref, weight_fraction_values)
# self.fail("Test if the testcase is working.")
[docs] def test_create_weight_fractions_trace_speed_test_two_elements(self): number_weight_fractions_ref = 41 weight_fraction_values = create_weight_fractions_trace(0.00005, 2, 0.0, 0.002) self.assertEqual(number_weight_fractions_ref, len(weight_fraction_values)) number_weight_fractions_ref = 201 weight_fraction_values = create_weight_fractions_trace(0.00001, 2, 0.0, 0.002) self.assertEqual(number_weight_fractions_ref, len(weight_fraction_values))
# self.fail("Test if the testcase is working.")
[docs] def test_create_weight_fractions_trace_speed_test_three_elements(self): number_weight_fractions_ref = 1681 weight_fraction_values = create_weight_fractions_trace(0.00005, 3, 0.0, 0.002) self.assertEqual(number_weight_fractions_ref, len(weight_fraction_values)) number_weight_fractions_ref = 40401 weight_fraction_values = create_weight_fractions_trace(0.00001, 3, 0.0, 0.002) self.assertEqual(number_weight_fractions_ref, len(weight_fraction_values))
# self.fail("Test if the testcase is working.")
[docs] def test_create_multi_horizontal_layer(self): """ Test the `create_multi_horizontal_layer` method. """ substrate_elements = [(14, 1.0)] layers = [] # 10.0 nm Al layer al_layer = Layer([(13, 1.0)], 10.0) layers.append(al_layer) mg_cu_layer = Layer([(12, 0.5), (29, 0.5)], 150.2) layers.append(mg_cu_layer) specimen = create_multi_horizontal_layer(substrate_elements, layers) self.assertEqual(3, specimen.numberRegions) self.assertEqual(1, specimen.regions[0].numberElements) self.assertEqual(1, specimen.regions[1].numberElements) self.assertEqual(2, specimen.regions[2].numberElements) self.assertAlmostEqual(0.0, specimen.regions[0].regionDimensions.minimumZ) self.assertAlmostEqual(0.0, specimen.regions[1].regionDimensions.minimumZ) self.assertAlmostEqual(100.0, specimen.regions[2].regionDimensions.minimumZ) self.assertAlmostEqual(20000000000.0, specimen.regions[0].regionDimensions.maximumZ) self.assertAlmostEqual(100.0, specimen.regions[1].regionDimensions.maximumZ) self.assertAlmostEqual(100.0 + 1502.0, specimen.regions[2].regionDimensions.maximumZ) self.assertEqual("Si100_Al100_T100.0nm_Mg50_Cu50_T1502.0nm", specimen.name)
# self.fail("Test if the testcase is working.") if __name__ == '__main__': # pragma: no cover import nose nose.runmodule()