def test_extractDataFromSims_with_nonempty_node(self): with patch('dataProcessing.AnalysisNodeData.extractDataFromSimId' ) as extrMock: with patch('trees.TreeNode.getSuccessfulMembers') as successMock: successMock.return_value = [1, 2, 3] an = AnalysisNodeData(TreeNode(''), ['K1'], 'areas') an.extractDataFromSims() successMock.assert_called_once_with() calls = [call(1), call(2), call(3)] self.assertEqual(calls, extrMock.mock_calls)
def test_verifyAnSolParams_with_sets_of_multiple_length(self): an = AnalysisNodeData('node', ['K1', 'K2'], 'areas') an.anSolParams = { 'a': set(['2', '3']), 'b': set(['1', '2', '3']), 'v': set(['0.3']), 'omega': set(['60']), 'gamma': set(['45']), 'sigma': set(['100']) } self.assertRaises(AssertionError, an.verifyAnSolParams)
def test_extractAnSolParams(self): adMock = MagicMock() params = { 'a': 20, 'b': 10, 'omega': 60, 'gamma': 45, 'sigma': 100, 'v': 0.3 } adMock.getAnSolParams.return_value = params an = AnalysisNodeData('node', ['K1', 'K3'], 'areas') an.extractAnSolParams(adMock) expParams = { 'a': set([20]), 'b': set([10]), 'v': set([0.3]), 'omega': set([60]), 'gamma': set([45]), 'sigma': set([100]) } self.assertEqual(expParams, an.anSolParams) an.extractAnSolParams(adMock) self.assertEqual(expParams, an.anSolParams) params['a'] = 30 expParams['a'] = set([20, 30]) adMock = MagicMock() adMock.getAnSolParams.return_value = params an.extractAnSolParams(adMock) self.assertEqual(expParams, an.anSolParams)
def test_calcSIFsForSigmaAndSIF(self): an = AnalysisNodeData('node', ['K1'], 'areas') an.anSolParams = {'a': 20, 'b': 10, 'v': 0.3, 'gamma': 45, 'omega': 60} an.angles = [30, 45] aMock = MagicMock(return_value=123) with patch('anSol.calcAnSolWrapper', aMock): res = an.calcSIFsForSigmaAndSIF(100, 'K2') self.assertEqual(123, res) aMock.assert_called_once_with(sifKey='K2', majorAxis=20, minorAxis=10, v=0.3, betas=[30, 45], gamma=45, omega=60, tensileStress=100)
def test_contructor_with_valid_input(self): an = AnalysisNodeData(node='node', sifs=['K1', 'K3'], eSignFactor='areas') self.assertEqual('areas', an.eSignFactor) self.assertEqual(['K1', 'K3'], an.sifs) self.assertEqual('node', an.node) self.assertEqual([], list(an.angles)) for s in ['K1', 'K3']: self.assertEqual(0, len(an.results[s])) self.assertEqual(0, len(an.anSol[s])) self.assertEqual( { 'a': set([]), 'b': set([]), 'omega': set([]), 'gamma': set([]), 'sigma': set([]), 'v': set([]) }, an.anSolParams) self.assertEqual({}, an.errors) expEst = { 'areaDiff': {}, 'dotProd': {}, 'avgNormError': {}, 'maxNormError': {}, 'rmsd': {} } self.assertEqual(expEst, an.estimates)
def test_extractDataFromSimId(self): with patch('dataProcessing.AnalysisNodeData.extractAnSolParams' ) as ansolMock: with patch('dataProcessing.AnalysisData') as aMock: aMock().getAngles.return_value = [4, 5, 6] aMock().getResults.return_value = { 'K1': ['1r4', '1r5', '1r6'], 'K3': ['3r4', '3r5', '3r6'] } aMock().getAnSol.return_value = { 'K1': ['1a4', '1a5', '1a6'], 'K3': ['3a4', '3a5', '3a6'] } an = AnalysisNodeData('node', ['K1', 'K3'], 'areas') an.angles = [1, 2, 3] an.results = {'K1': ['1r1'], 'K2': ['2r1'], 'K3': ['3r1']} an.anSol = {'K1': ['1a1'], 'K2': ['2a1'], 'K3': ['3a1']} an.extractDataFromSimId('simId') expAngles = [1, 2, 3, 4, 5, 6] expResults = { 'K1': ['1r1', '1r4', '1r5', '1r6'], 'K2': ['2r1'], 'K3': ['3r1', '3r4', '3r5', '3r6'] } expAnSol = { 'K1': ['1a1', '1a4', '1a5', '1a6'], 'K2': ['2a1'], 'K3': ['3a1', '3a4', '3a5', '3a6'] } self.assertEqual(expAngles, list(an.angles)) for k in expResults.keys(): self.assertEqual(expResults[k], list(an.results[k])) self.assertEqual(expAnSol[k], list(an.anSol[k]))
def test_sortDataByAnglesData(self): an = AnalysisNodeData(node='node', sifs=['K1'], eSignFactor='areas') an.angles = [2, 3, 1, 0] an.results['K1'] = [6, 7, 5, 4] an.anSol['K1'] = [9, 10, 8, 7] an.sortDataByAnglesData() self.assertEqual([0, 1, 2, 3], list(an.angles)) self.assertEqual([4, 5, 6, 7], list(an.results['K1'])) self.assertEqual([7, 8, 9, 10], list(an.anSol['K1']))
def test_verifyAnSolParams_with_sets_of_unit_length(self): an = AnalysisNodeData('node', ['K1', 'K2'], 'areas') an.anSolParams = { 'a': set(['2']), 'b': set(['1']), 'v': set(['0.3']), 'omega': set(['60']), 'gamma': set(['45']), 'sigma': set(['100']) } an.verifyAnSolParams() expected = { 'a': 2, 'b': 1, 'v': 0.3, 'omega': 60, 'gamma': 45, 'sigma': 100 } self.assertEqual(expected, an.anSolParams)
def test_calcEstimates_with_ZeroDivisionError(self): wrMock = MagicMock(side_effect=ZeroDivisionError) with patch('miscFuncs.calcStatsWrapper', wrMock): an = AnalysisNodeData('node', ['K1'], 'areas') an.angles = [1, 2] an.anSol = {'K1': [1, 2]} an.results = {'K1': [1, 2]} an.calcEstimates() errs = ['areaDiff', 'dotProd', 'avgNormError', 'maxNormError', 'rmsd'] for e in errs: self.assertTrue(np.isnan(an.estimates[e]['K1']))
def test_calcErrors(self): diffMock = MagicMock(return_value=1) with patch('miscFuncs.calcDiffErrors', diffMock): an = AnalysisNodeData('node', ['K1', 'K2'], 'areas') an.results = {'K1': ['1r1', '1r2'], 'K2': ['2r1', '2r2']} an.anSol = {'K1': ['1a1', '1a2'], 'K2': ['2a1', '2a2']} an.calcErrors() diffMock.assert_any_call(['1a1', '1a2'], ['1r1', '1r2']) diffMock.assert_any_call(['2a1', '2a2'], ['2r1', '2r2']) self.assertEqual(2, diffMock.call_count) expected = {'difference': {'K1': 1, 'K2': 1}, 'normedDiff': {}}
def test_calcEstimates_with_nonzero_analytical_solutions(self): wrMock = MagicMock(return_value=1) with patch('miscFuncs.calcStatsWrapper', wrMock): an = AnalysisNodeData('node', ['K1', 'K3'], 'areas') an.angles = [1, 2] an.anSol = {'K1': [1, 2], 'K3': [1, 2]} an.results = {'K1': [1, 2], 'K3': [1, 2]} an.calcEstimates() expected = { e: { 'K1': 1, 'K3': 1 } for e in ['areaDiff', 'dotProd', 'avgNormError', 'maxNormError', 'rmsd'] } self.assertEqual(expected, an.estimates)
def test_fixAngleValues(self): an = AnalysisNodeData('node', ['K1'], 'areas') an.angles = np.array([1, 4, 90, 120, 90, 340, 380, 720]) an.fixAngleValues() exp = [1, 4, 90, 120, 90, 340, 20, 0] self.assertEqual(exp, list(an.angles))