@@ -1718,3 +1718,50 @@ func Test_MarshalForm_Err(t *testing.T) {
1718
1718
Equal (t , err .Error (), "Field Namespace:Struct ERROR:always err" )
1719
1719
Equal (t , v3 , url.Values {})
1720
1720
}
1721
+
1722
+ type errmarshalerptrrec struct {
1723
+ called bool
1724
+ Fname string
1725
+ Sname string
1726
+ }
1727
+
1728
+ func (m * errmarshalerptrrec ) MarshalForm () ([]string , error ) {
1729
+ m .called = true
1730
+ return nil , errors .New ("always err" )
1731
+ }
1732
+
1733
+ func Test_MarshalForm_ErrPtrRec (t * testing.T ) {
1734
+ encoder := NewEncoder ()
1735
+
1736
+ t1 := struct {
1737
+ Ptr * errmarshalerptrrec
1738
+ }{
1739
+ Ptr : & errmarshalerptrrec {
1740
+ Fname : "John" ,
1741
+ Sname : "Smith" ,
1742
+ },
1743
+ }
1744
+ v1 , err := encoder .Encode (t1 )
1745
+ NotEqual (t , err , nil )
1746
+ Equal (t , err .Error (), "Field Namespace:Ptr ERROR:always err" )
1747
+ Equal (t , v1 , url.Values {})
1748
+
1749
+ t2 := struct {
1750
+ NilPtr * errmarshalerptrrec
1751
+ }{}
1752
+ v2 , err := encoder .Encode (t2 )
1753
+ Equal (t , err , nil )
1754
+ Equal (t , v2 , url.Values {})
1755
+
1756
+ t3 := struct {
1757
+ Struct errmarshalerptrrec
1758
+ }{
1759
+ Struct : errmarshalerptrrec {
1760
+ Fname : "John" ,
1761
+ Sname : "Smith" ,
1762
+ },
1763
+ }
1764
+ _ , err = encoder .Encode (t3 )
1765
+ Equal (t , err , nil )
1766
+ Equal (t , t3 .Struct .called , false )
1767
+ }
0 commit comments