Move History

Fork Selected
  • Description

    Create a simple calculator that given two numbers and an operator returns the value of the arithmetic operation. Here are the operations to support:

      • addition
      • subtraction
      • multiplication
    Code
    function Calculator ($n1,$s,$n2 ){
      Invoke-Expression ("$n1  $s  $n2")
    }
    Test Cases
    # Easy breezy tests
    $test1 = Calculator -n1 4 -n2 5 -s '+' 
    $test2 = Calculator -n1 12 -n2 5 -s '-' 
    $test3 = Calculator -n1 20 -n2 3 -s '*' 
    
    Describe 'FixedTests' {
      It "Should pass" {
        $test1 | Should be 9
      }
      It "Should pass" {
        $test2 | Should be 7
      }
        It "Should pass" {
        $test3 | Should be 60
      }
    }
    
    
    
    Describe 'RandomTests' {
    function ans($n1,$s,$n2 ){
      Invoke-Expression ("$n1  $s  $n2")
    }
    for($i =0; $i -lt 100; $i++){
       $s =  '+','-','*' | Get-Random
       $n1 = Get-Random -Maximum 1000
       $n2 = Get-Random -Maximum 1000
       $ans = ans($n1,$s,$n2)
        It "Should pass" {
          Calculator ($n1,$s,$n2)| Should be $ans
        }
      }
    
    }
    
    
  • Code
    • import javax.script.ScriptEngineManager;
    • interface Calculator {
    • static int calculate(int a, int b, char operation) {
    • var engine = new ScriptEngineManager().getEngineByName("JavaScript");
    • try {
    • return Integer.parseInt(String.valueOf(engine.eval(a + " " + operation + " " + b)));
    • } catch (Exception cause) {
    • return 0;
    • }
    • }
    • }
    • function Calculator ($n1,$s,$n2 ){
    • Invoke-Expression ("$n1 $s $n2")
    • }
    Test Cases
    • import static java.util.concurrent.ThreadLocalRandom.current;
    • import static org.junit.jupiter.api.Assertions.assertEquals;
    • # Easy breezy tests
    • $test1 = Calculator -n1 4 -n2 5 -s '+'
    • $test2 = Calculator -n1 12 -n2 5 -s '-'
    • $test3 = Calculator -n1 20 -n2 3 -s '*'
    • import org.junit.jupiter.api.Test;
    • class CalculatorTest {
    • @Test
    • void sample() {
    • assertEquals(9, Calculator.calculate(4, 5, '+'));
    • assertEquals(7, Calculator.calculate(12, 5, '-'));
    • assertEquals(60, Calculator.calculate(20, 3, '*'));
    • Describe 'FixedTests' {
    • It "Should pass" {
    • $test1 | Should be 9
    • }
    • It "Should pass" {
    • $test2 | Should be 7
    • }
    • It "Should pass" {
    • $test3 | Should be 60
    • }
    • }
    • @Test
    • void random() {
    • for (int i = 0; i < 100; i++) {
    • var pair = current().ints(2, -1000, 1000).toArray();
    • assertEquals(pair[0] + pair[1], Calculator.calculate(pair[0], pair[1], '+'));
    • assertEquals(pair[0] - pair[1], Calculator.calculate(pair[0], pair[1], '-'));
    • assertEquals(pair[0] * pair[1], Calculator.calculate(pair[0], pair[1], '*'));
    • Describe 'RandomTests' {
    • function ans($n1,$s,$n2 ){
    • Invoke-Expression ("$n1 $s $n2")
    • }
    • for($i =0; $i -lt 100; $i++){
    • $s = '+','-','*' | Get-Random
    • $n1 = Get-Random -Maximum 1000
    • $n2 = Get-Random -Maximum 1000
    • $ans = ans($n1,$s,$n2)
    • It "Should pass" {
    • Calculator ($n1,$s,$n2)| Should be $ans
    • }
    • }
    • }
    • }