natspec_test.go 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. package natspec
  2. import (
  3. "testing"
  4. )
  5. func TestNotice(t *testing.T) {
  6. tx := `
  7. {
  8. "jsonrpc": "2.0",
  9. "method": "eth_call",
  10. "params": [{
  11. "to": "0x8521742d3f456bd237e312d6e30724960f72517a",
  12. "data": "0xc6888fa1000000000000000000000000000000000000000000000000000000000000007a"
  13. }],
  14. "id": 6
  15. }
  16. `
  17. abi := `
  18. [{
  19. "name": "multiply",
  20. "constant": false,
  21. "type": "function",
  22. "inputs": [{
  23. "name": "a",
  24. "type": "uint256"
  25. }],
  26. "outputs": [{
  27. "name": "d",
  28. "type": "uint256"
  29. }]
  30. }]
  31. `
  32. desc := "Will multiply `a` by 7 and return `a * 7`."
  33. method := "multiply"
  34. ns, err := New()
  35. if err != nil {
  36. t.Errorf("NewNATSpec error %v", err)
  37. }
  38. notice, err := ns.Notice(tx, abi, method, desc)
  39. if err != nil {
  40. t.Errorf("expected no error got %v", err)
  41. }
  42. expected := "Will multiply 122 by 7 and return 854."
  43. if notice != expected {
  44. t.Errorf("incorrect notice. expected %v, got %v", expected, notice)
  45. } else {
  46. t.Logf("returned notice \"%v\"", notice)
  47. }
  48. notice, err = ns.Notice(tx, abi, method, "Will multiply 122 by \"7\" and return 854.")
  49. expected = "natspec.js error setting expression: (anonymous): Line 1:41 Unexpected number"
  50. if err == nil {
  51. t.Errorf("expected error, got nothing (notice: '%v')", err, notice)
  52. } else {
  53. if err.Error() != expected {
  54. t.Errorf("expected error '%s' got '%v' (notice: '%v')", expected, err, notice)
  55. }
  56. }
  57. // https://github.com/ethereum/natspec.js/issues/1
  58. // badDesc := "Will multiply `e` by 7 and return `a * 7`."
  59. // notice, err = ns.Notice(tx, abi, method, badDesc)
  60. // expected = "natspec.js error evaluating expression: wrong input param in expression ''"
  61. // if err == nil {
  62. // t.Errorf("expected error, got nothing (notice: '%v')", notice)
  63. // } else {
  64. // if err.Error() != expected {
  65. // t.Errorf("expected error '%s' got '%v' (notice: '%v')", expected, err, notice)
  66. // }
  67. // }
  68. notice, err = ns.Notice(tx, abi, "missing_method", desc)
  69. expected = "natspec.js error evaluating expression: wrong input params in expression 'Will multiply `a` by 7 and return `a * 7`.'"
  70. if err == nil {
  71. t.Errorf("expected error, got nothing (notice: '%v')", notice)
  72. } else {
  73. if err.Error() != expected {
  74. t.Errorf("expected error '%s' got '%v' (notice: '%v')", expected, err, notice)
  75. }
  76. }
  77. }