Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
E
edx-platform
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
edx
edx-platform
Commits
43395b70
Commit
43395b70
authored
May 21, 2013
by
Peter Baratta
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Enable coverage for calc module; split off tests
parent
82482e89
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
24 additions
and
26 deletions
+24
-26
common/lib/calc/.coveragerc
+15
-0
common/lib/calc/calc.py
+0
-24
common/lib/calc/tests/test_calc.py
+9
-2
No files found.
common/lib/calc/.coveragerc
0 → 100644
View file @
43395b70
# .coveragerc for common/lib/calc
[run]
data_file = reports/common/lib/calc/.coverage
source = common/lib/calc
branch = true
[report]
ignore_errors = True
[html]
title = Calc Python Test Coverage Report
directory = reports/common/lib/calc/cover
[xml]
output = reports/common/lib/calc/coverage.xml
common/lib/calc/calc.py
View file @
43395b70
...
@@ -230,27 +230,3 @@ def evaluator(variables, functions, string, cs=False):
...
@@ -230,27 +230,3 @@ def evaluator(variables, functions, string, cs=False):
expr
<<
Optional
((
plus
|
minus
))
+
term
+
ZeroOrMore
((
plus
|
minus
)
+
term
)
# -5 + 4 - 3
expr
<<
Optional
((
plus
|
minus
))
+
term
+
ZeroOrMore
((
plus
|
minus
)
+
term
)
# -5 + 4 - 3
expr
=
expr
.
setParseAction
(
sum_parse_action
)
expr
=
expr
.
setParseAction
(
sum_parse_action
)
return
(
expr
+
stringEnd
)
.
parseString
(
string
)[
0
]
return
(
expr
+
stringEnd
)
.
parseString
(
string
)[
0
]
if
__name__
==
'__main__'
:
variables
=
{
'R1'
:
2.0
,
'R3'
:
4.0
}
functions
=
{
'sin'
:
numpy
.
sin
,
'cos'
:
numpy
.
cos
}
print
"X"
,
evaluator
(
variables
,
functions
,
"10000||sin(7+5)-6k"
)
print
"X"
,
evaluator
(
variables
,
functions
,
"13"
)
print
evaluator
({
'R1'
:
2.0
,
'R3'
:
4.0
},
{},
"13"
)
print
evaluator
({
'e1'
:
1
,
'e2'
:
1.0
,
'R3'
:
7
,
'V0'
:
5
,
'R5'
:
15
,
'I1'
:
1
,
'R4'
:
6
},
{},
"e2"
)
print
evaluator
({
'a'
:
2.2997471478310274
,
'k'
:
9
,
'm'
:
8
,
'x'
:
0.66009498411213041
},
{},
"5"
)
print
evaluator
({},
{},
"-1"
)
print
evaluator
({},
{},
"-(7+5)"
)
print
evaluator
({},
{},
"-0.33"
)
print
evaluator
({},
{},
"-.33"
)
print
evaluator
({},
{},
"5+1*j"
)
print
evaluator
({},
{},
"j||1"
)
print
evaluator
({},
{},
"e^(j*pi)"
)
print
evaluator
({},
{},
"fact(5)"
)
print
evaluator
({},
{},
"factorial(5)"
)
try
:
print
evaluator
({},
{},
"5+7 QWSEKO"
)
except
UndefinedVariable
:
print
"Successfully caught undefined variable"
common/lib/calc/tests/test_calc.py
View file @
43395b70
...
@@ -3,7 +3,7 @@ unittests for calc.py
...
@@ -3,7 +3,7 @@ unittests for calc.py
Run like this:
Run like this:
rake test_common/lib/calc
??
rake test_common/lib/calc
"""
"""
...
@@ -82,6 +82,8 @@ class EvaluatorTest(unittest.TestCase):
...
@@ -82,6 +82,8 @@ class EvaluatorTest(unittest.TestCase):
operator
,
input_str
,
answer
)
operator
,
input_str
,
answer
)
self
.
assertEqual
(
answer
,
result
,
msg
=
fail_msg
)
self
.
assertEqual
(
answer
,
result
,
msg
=
fail_msg
)
def
test_raises_zero_division_err
(
self
):
''' Ensure division by zero gives an error '''
self
.
assertRaises
(
ZeroDivisionError
,
calc
.
evaluator
,
self
.
assertRaises
(
ZeroDivisionError
,
calc
.
evaluator
,
{},
{},
'1/0'
)
{},
{},
'1/0'
)
...
@@ -98,6 +100,8 @@ class EvaluatorTest(unittest.TestCase):
...
@@ -98,6 +100,8 @@ class EvaluatorTest(unittest.TestCase):
# I don't know why you would want this, but it works.
# I don't know why you would want this, but it works.
self
.
assertEqual
(
calc
.
evaluator
({},
{},
"j||1"
),
0.5
+
0.5
j
)
self
.
assertEqual
(
calc
.
evaluator
({},
{},
"j||1"
),
0.5
+
0.5
j
)
def
test_parallel_resistors_zero_error
(
self
):
''' Check the behavior of the || operator with 0 '''
self
.
assertRaises
(
ZeroDivisionError
,
calc
.
evaluator
,
self
.
assertRaises
(
ZeroDivisionError
,
calc
.
evaluator
,
{},
{},
'0||1'
)
{},
{},
'0||1'
)
...
@@ -121,7 +125,7 @@ class EvaluatorTest(unittest.TestCase):
...
@@ -121,7 +125,7 @@ class EvaluatorTest(unittest.TestCase):
angles
=
[
'-pi/4'
,
'0'
,
'pi/6'
,
'pi/5'
,
'5*pi/4'
,
'9*pi/4'
,
'1 + j'
]
angles
=
[
'-pi/4'
,
'0'
,
'pi/6'
,
'pi/5'
,
'5*pi/4'
,
'9*pi/4'
,
'1 + j'
]
sin_values
=
[
-
0.707
,
0
,
0.5
,
0.588
,
-
0.707
,
0.707
,
1.298
+
0.635
j
]
sin_values
=
[
-
0.707
,
0
,
0.5
,
0.588
,
-
0.707
,
0.707
,
1.298
+
0.635
j
]
cos_values
=
[
0.707
,
1
,
0.866
,
0.809
,
-
0.707
,
0.707
,
0.834
-
0.989
j
]
cos_values
=
[
0.707
,
1
,
0.866
,
0.809
,
-
0.707
,
0.707
,
0.834
-
0.989
j
]
tan_values
=
[
-
1
,
0
,
0.577
,
0.727
,
1
,
1
,
0.
762
j
,
0.
272
+
1.084
j
]
tan_values
=
[
-
1
,
0
,
0.577
,
0.727
,
1
,
1
,
0.272
+
1.084
j
]
# Cannot test tan(pi/2) b/c pi/2 is a float and not precise...
# Cannot test tan(pi/2) b/c pi/2 is a float and not precise...
self
.
assert_function_values
(
'sin'
,
angles
,
sin_values
)
self
.
assert_function_values
(
'sin'
,
angles
,
sin_values
)
...
@@ -239,6 +243,9 @@ class EvaluatorTest(unittest.TestCase):
...
@@ -239,6 +243,9 @@ class EvaluatorTest(unittest.TestCase):
variables
=
{
'x'
:
9.72
,
'y'
:
7.91
,
'loooooong'
:
6.4
}
variables
=
{
'x'
:
9.72
,
'y'
:
7.91
,
'loooooong'
:
6.4
}
# Should not change value of constant
# Should not change value of constant
# even with different numbers of variables...
self
.
assertEqual
(
calc
.
evaluator
({
'x'
:
9.72
},
{},
'13'
),
13
)
self
.
assertEqual
(
calc
.
evaluator
({
'x'
:
9.72
,
'y'
:
7.91
},
{},
'13'
),
13
)
self
.
assertEqual
(
calc
.
evaluator
(
variables
,
{},
'13'
),
13
)
self
.
assertEqual
(
calc
.
evaluator
(
variables
,
{},
'13'
),
13
)
# Easy evaluation
# Easy evaluation
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment