Code simplifications.  New test cases.

FossilOrigin-Name: 57508518ef9d003d259ba98dcc32e5104aca26731a7161808741fe10bc0830d0
diff --git a/src/treeview.c b/src/treeview.c
index ea91710..cfe8182 100644
--- a/src/treeview.c
+++ b/src/treeview.c
@@ -293,7 +293,8 @@
       break;
     }
     case TK_TRUEFALSE: {
-      sqlite3TreeViewLine(pView, pExpr->iTable ? "TRUE":"FALSE");
+      sqlite3TreeViewLine(pView,
+         sqlite3ExprTruthOperand(pExpr) ? "TRUE" : "FALSE");
       break;
     }
 #ifndef SQLITE_OMIT_BLOB_LITERAL
@@ -353,16 +354,15 @@
     case TK_NOTNULL: zUniOp = "NOTNULL"; break;
 
     case TK_TRUTH: {
+      int x;
+      const char *azOp[] = {
+         "IS-FALSE", "IS-TRUE", "IS-NOT-FALSE", "IS-NOT-TRUE"
+      };
       assert( pExpr->op2==TK_IS || pExpr->op2==TK_ISNOT );
       assert( pExpr->pRight );
       assert( pExpr->pRight->op==TK_TRUEFALSE );
-      assert( pExpr->pRight->iTable==0 || pExpr->pRight->iTable==1 );
-      switch( (pExpr->op2==TK_ISNOT)*2 + pExpr->pRight->iTable ){
-        case 0: zUniOp = "IS-FALSE";     break;
-        case 1: zUniOp = "IS-TRUE";      break;
-        case 2: zUniOp = "IS-NOT-FALSE"; break;
-        case 3: zUniOp = "IS-NOT-TRUE";  break;
-      }
+      x = (pExpr->op2==TK_ISNOT)*2 + sqlite3ExprTruthOperand(pExpr->pRight);
+      zUniOp = azOp[x];
       break;
     }