Cree pruebas unitarias para validar la cadena [] devuelta desde una función de solidez

Tengo una función de solidez como la siguiente,

pragma solidity ^0.4.24;
pragma experimental ABIEncoderV2;

contract Funding {
    function sum(uint input1, uint input2) public returns (uint) {
        return input1 + input2;
    }

    struct patient{
        uint id;
        string fullName;
        mapping(uint => string[]) DoctorAccess;        
    }

    function getPatient(uint patientId, uint doctorId) public returns (string[]) {
        patient p;
        p.id = 1;
        p.fullName="Saran";
        p.DoctorAccess[doctorId].push("Doctor1Key");
        return p.DoctorAccess[doctorId];
    }
}

La compilación del código se ve bien. Por lo tanto, he creado un caso de prueba para el anterior como se indica a continuación.

pragma solidity ^0.4.24;
pragma experimental ABIEncoderV2;

import "truffle/Assert.sol";
import "../contracts/Funding.sol";

contract FundingTest {

    function testSum() public {
        Funding  f= new Funding();
        Assert.equal(f.sum(1,2),3," two plus one should be three");
    }

    function test_getPatient() public {
        Funding f = new Funding();
        string[] doctorKeys;
        doctorKeys.push("Doctor1Key");
        Assert.equal(f.getPatient(1,1),doctorKeys, "The doctor mapping should be a valid one");
    }
}

Cuando intento ejecutar el caso de prueba, aparece el siguiente error

,/H/ethereum/PM/test/FundingTest.sol:18:9: TypeError: Miembro "igual" no encontrado o no visible después de la búsqueda dependiente del argumento en type(library Assert) Assert.equal(f.getPatient(1, 1),doctorKeys, "El mapeo médico debe ser válido");

¿El caso de prueba anterior es incorrecto o hay algo que debe abordarse?

De manera similar, he creado una función de solidez que devuelve la estructura, sin embargo, no encuentro ningún ejemplo que pueda usarse para consumir la estructura devuelta por el método dentro del caso de prueba.

Respuestas (1)

El método equal en Assert de solidity no admite matrices.

Como se mencionó aquí, necesitaría crear una declaración Assert.equal separada para cada entrada en la matriz.