Javascript Calculator failed to pass test #9, #12, #13 and #14

Viewed 36

Good day!

This is my version of Javascript Calculator: https://codepen.io/faber_g/pen/YzLpVWX

const calc = document.querySelector('.button-conteiner');

const regEx = /^(([1-9]\d*)|0)(.\d*[1-9])?$/;

calc.addEventListener('click', function(event) {
  
  if(!event.target.classList.contains('calc-btn')) return;
  
  let value = event.target.innerText;
  
  if (value === 'x') {
    value = '*'
  };
   
  switch(value) {
      
      case '1':
      case '2':
      case '3':
      case '4':
      case '5':
      case '6':
      case '7':
      case '8':
      case '9':
        if (output.innerText === '') {
          display.innerText = value;
          output.innerText += value;
          break;
      } 
        else if (output.innerText === '0'){
          display.innerText = value;
          output.innerText = value;
          break; 
      } 
        else if (display.innerText === '+' || display.innerText === '*'|| display.innerText === '/' || display.innerText === '-') {
          display.innerText = value;
          output.innerText += value;
          break;
      }
        else {
          display.innerText += value;
          output.innerText += value;
          break;
      } 
        
      case 'AC':
        output.innerText = '';
        display.innerText = '0';
        break;
      
      case '=':
        display.innerText = eval(output.innerText);
        output.innerText = output.innerText + '=' + eval(output.innerText);
        break;
      
      case '.':
        if (output.innerText === '' || output.innerText === '0.') {
          display.innerText = '0.';
          output.innerText = '0.';
          break;
      } 
        if (display.innerText.indexOf('.') !== -1) {
          false
          break; 
      } 
       else {
        display.innerText += '.';
        output.innerText += '.';
        break;
      } 
      
      case '0':
        if (display.innerText === '0' && output.innerText === '') {
        output.innerText = '';
      } 
        else if (output.innerText.search(/^[0]/) !== -1) {
          false
          break; 
      } 
        else {
          display.innerText += value;
          output.innerText += value;
          break; 
      } 
      case '+':
      case '-':
      case '*':
      case '/':
        if (output.innerText.search(/=/) !== -1) {
          output.innerText = display.innerText + value;
          display.innerText = value;
          break;
      } 
        else if (output.innerText.search(/^[+-/*]/) !== -1  && output.innerText.length === 1) {
          output.innerText = value;
          display.innerText = value;
          break; 
      } 
      else if (output.innerText.search(/[+-/*]$/) !== -1 && value === '-') {
          
          output.innerText += value;
          display.innerText = value;
          break;
        }
      
        else if (output.innerText.search(/[+-/*]$/) !== -1) {
          
          output.innerText = output.innerText.substring(0, output.innerText.length - 1) + value;
          display.innerText = display.innerText.replace(/[+-/*]$/, value);
          break;
        }
        
        
      default:
        output.innerText += value; 
        display.innerText = value;
  }
    
  
});

I can not understand why it can’t pass test #9, #12, #13 and #14. When I make calculations by myself, answer is same like in the test, but when run it througth test, it is failed.

Please give me some hint where I missed problem.

You can run test by opening codepen and in the left corner you will see three green lines, it is drop down box is a test run.

Thank you!

0 Answers
Related