Open 0xJamesBong opened 1 year ago
I have a struct like this
struct Question { strings.slice question; strings.slice answer; }
And a mappingmapping(uint256 => QA) public questions; and a proposeQuestion function that looks like this
mapping(uint256 => QA) public questions;
public returns (bool done) { questions[questionId].question = _question.toSlice(); questions[questionId].answer = _answer.toSlice(); questionId++; return true; }
When I retrieve the question and the answer stored in the struct which is stored in a mapping, and console log it, using foundry
function testQuestion() public { string memory q = "What?"; console.log(q, q.toSlice().toString()); myContract.proposeQuestion(q, unicode"すみません"); assertTrue( keccak256(abi.encodePacked(q)) == keccak256(abi.encodePacked(q.toSlice().toString())) ); ( strings.slice memory question, strings.slice memory answer ) = myContract.questions(0); console.log(question.toString());
The console prints out gibberish ,.��
However, if I just do this console.log(q, q.toSlice().toString()) they print out the same thing! What's going on here?
console.log(q, q.toSlice().toString())
PS:
Also, when I tried this out, this test fails
assertEq( keccak256(abi.encodePacked(q)), keccak256(abi.encodePacked(question.toString())) );
and yields this error
Expected: 0xc649b6993c4fe2cdb223c885f0145101f4d5ef046eebceed76b6431c34626612 Actual: 0xf8a49a8b34d42855db8ed1c016fa2fe0354abc43323b8d67be08e3837aae8b60 Test result: FAILED. 0 passed; 1 failed; finished in 5.19ms```
I have a struct like this
And a mapping
mapping(uint256 => QA) public questions;
and a proposeQuestion function that looks like thisWhen I retrieve the question and the answer stored in the struct which is stored in a mapping, and console log it, using foundry
The console prints out gibberish ,.��
However, if I just do this
console.log(q, q.toSlice().toString())
they print out the same thing! What's going on here?PS:
Also, when I tried this out, this test fails
and yields this error