You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Lua has a number of default metamethods (Lua 5.3 Manual -> 2.4 – Metatables and Metamethods) that defines an object behaviour for example for default Lua operators. Most of these metamethods can be covered by general properties. For example if a and b have metamethod __eq then (a == b) == (b == a) and (a == b) ~= (a ~= b), for metamethod __lt - (a > b) == (b < a) and so on. I believe it would simplify testing a bit if lua-quickcheck will discover available metamethods and them with such properties.
What do you think, @luc-tielen? I'm ready to spend some time implementing this.
General methods
__index - none?
__newindex - none?
__mode - none?
__call - none?
__metatable - none?
__tostring
type(tostring(a)) =='string'
__len
type(#a) =='number'
__pairs - none?
__ipairs - none?
__gc - none?
__name
type(a.__name() =='string'
__close
Mathematic Operators
__unm
-(-a) ==a
__add
a+b==b+aa+0==a
__sub - none?
__mul
a*2==a+aa*1==a*1*1
__div - none?
__idiv - none?
__mod
a%b==a-math.floor(a/b) *b
__pow
__concat - none?
Bitwise Operators
__band
(a & (a-1)) ==0, ifaisx^2
__bor
a | 0==a
__bxor
a && b==b && a
__bnot
~(~a) ==a
__shl
a<<0==a
__shr
a>>0==a
Equivalence Comparison Operators
__eq
(a==b) == (b==a)
(a==b) ~= (a~=b)
__lt
(a>b) == (b<a)
__le
(a>=b) == (b<=a)
The text was updated successfully, but these errors were encountered:
ligurio
changed the title
Properties for default metamethods
Add functions to test properties of default Lua metamethods
Jun 4, 2021
I'm not so sure about the general methods, but I think the rest could be interesting to provide.
I wouldn't automatically do it though, since most of these operations might not make sense, and how would users fix it then?
But maybe we could provide some functions that take X generators, and then set up a default property that is often used?
For example: property_commutative_addition(generator1, generator2)?
Lua has a number of default metamethods (Lua 5.3 Manual -> 2.4 – Metatables and Metamethods) that defines an object behaviour for example for default Lua operators. Most of these metamethods can be covered by general properties. For example if
a
andb
have metamethod__eq
then(a == b) == (b == a)
and(a == b) ~= (a ~= b)
, for metamethod__lt
-(a > b) == (b < a)
and so on. I believe it would simplify testing a bit if lua-quickcheck will discover available metamethods and them with such properties.What do you think, @luc-tielen? I'm ready to spend some time implementing this.
General methods
__index
- none?__newindex
- none?__mode
- none?__call
- none?__metatable
- none?__tostring
__len
__pairs
- none?__ipairs
- none?__gc
- none?__name
__close
Mathematic Operators
__unm
__add
__sub
- none?__mul
__div
- none?__idiv
- none?__mod
__pow
__concat
- none?Bitwise Operators
__band
__bor
__bxor
__bnot
__shl
__shr
Equivalence Comparison Operators
__eq
__lt
__le
The text was updated successfully, but these errors were encountered: