Посчитать кол-во пройденных и не пройденных тестов

Подскажите, пожалуйста, как можно посчитать количество пройденных и не пройденных тестов?
След.код:

 function dCopy(obj) { 
 
   if (Array.isArray(obj)) {
    var Arr = []; 
    for ( var i = 0; i < obj.length; i++ ) {
          Arr[i] = dCopy(obj[i]); 
    }
    return Arr; 
   }
  
   var Hash = {}; 
   for ( i in obj ) 
     Hash[i] = dCopy(obj[i]); 
   return Hash;
 
  }
// потом идут тесты этой функции
function dCopyTests() {

  { 
    var h1 = { a:5, b:{b1:6,b2:7}, c:[33,22], d:null, e:undefined, f:Number.NaN };
    var h2 = dCopy(h1);
    console.log(h1 === h2); // false
    console.error( false?'пройден':'НЕ ПРОЙДЕН!' );   

    console.log(h1.a === h2.a);   // true
    console.log( true?'пройден':'НЕ ПРОЙДЕН!' );  
 
    console.log(h1.b === h2.b);   // false
    console.error( false?'пройден':'НЕ ПРОЙДЕН!' );
  
    console.log(h1.b.b1 === h2.b.b1);    // true
    console.log( true?'пройден':'НЕ ПРОЙДЕН!' );  
  }
    console.log(dCopyTests_сount); // функция для подсчета пройден/НЕ ПРОЙДЕН
}

  function dCopyTests_сount() {

    const results=[ 'true', 'false' ];

    let count={}; // ключ - true/false, значение - сколько раз встретилось
    for ( let i=0; i<results.length; i++ ) {
    const result=results[i];
    if ( !(result in count) )
       count[result]=0;
    count[result]++;  
    }
    console.log( count );
  }

Функция для подсчета не срабатывает корректно, наверное, есть неточности в коде. Помогите разобраться, в чем здесь дело.
Спасибо.

Для начала функция клонирования объекта не работает как ожидается. Я сравнил содержимое h1 и h2. Ожидал увидеть одинаковые объекты, а увидел объекты разных форм. Глубже не смотрел.

Функции для клонирования объектов не нужно изобретать (если цель не в развлечении или именно в создании подобной функции). Лучше пользоваться встроенными типа structuredClone() global function - Web APIs | MDN.

Спасибо за ответ!