logic testing