function test4()
 {
     $test = true;
     // Prepare the test data
     $testData = new kp_testData();
     $testPostIDs = $testData->insertTestPosts(3, "post");
     $testPageIDs = $testData->insertTestPosts(3, "page");
     $postKeys = array_keys($testPostIDs);
     $pageKeys = array_keys($testPageIDs);
     $user1 = new kp_testUser(array($postKeys[0], $pageKeys[0], $attachmentKeys[0]), array());
     $user2 = new kp_testUser(array($postKeys[0], $postKeys[1], $postKeys[2], $pageKeys[0], $pageKeys[1], $pageKeys[2]), array());
     try {
         // Recommend only posts
         $test4a = true;
         $widgetObj = new kp_widget();
         $widgetInstance = array("posttypes-post" => true, "posttypes-page" => false, "numposts" => 6);
         $widgetResults = $widgetObj->widget(array(), $widgetInstance, false, "", array(), array(), $user1->ipAddress, $user1->userAgent);
         $recommender = $widgetResults["recommender"];
         foreach ($recommender->posts as $recommendedPost) {
             $test4a = $test4a && $recommendedPost->post->post_type == "post";
         }
         $test = $test && $test4a;
         // Recommend only page (don't specify what to do with posts or pages)
         $test4b = true;
         $widgetObj = new kp_widget();
         $widgetInstance = array("posttypes-page" => true, "numposts" => 6);
         $widgetResults = $widgetObj->widget(array(), $widgetInstance, false, "", array(), array(), $user1->ipAddress, $user1->userAgent);
         $recommender = $widgetResults["recommender"];
         foreach ($recommender->posts as $recommendedPost) {
             $test4b = $test4b && $recommendedPost->post->post_type == "page";
         }
         $test = $test && $test4b;
         // Recommend only kp_test_custom and pages but not posts
         $test4c = true;
         $widgetObj = new kp_widget();
         $widgetInstance = array("posttypes-post" => true, "posttypes-page" => true, "numposts" => 10);
         $widgetResults = $widgetObj->widget(array(), $widgetInstance, false, "", array(), array(), $user1->ipAddress, $user1->userAgent);
         $recommender = $widgetResults["recommender"];
         foreach ($recommender->posts as $recommendedPost) {
             $test4c = $test4c && ($recommendedPost->post->post_type == "post" || $recommendedPost->post->post_type == "page");
         }
         $test = $test && $test4c;
         // Don't set any post types, default to all post types
         $test4d = true;
         $widgetObj = new kp_widget();
         $widgetInstance = array("numposts" => 10);
         $widgetResults = $widgetObj->widget(array(), $widgetInstance, false, "", array(), array(), $user1->ipAddress, $user1->userAgent);
         $recommender = $widgetResults["recommender"];
         foreach ($recommender->posts as $recommendedPost) {
             $test4d = $test4d && ($recommendedPost->post->post_type == "post" || $recommendedPost->post->post_type == "page");
         }
         $test = $test && $test4d;
     } catch (Exception $e) {
     }
     // Remove the test data
     $user1->deleteVisitData();
     $user2->deleteVisitData();
     $testData->deleteAllTestPosts();
     $testObj = new kp_test("Test 4", $test, "kp_widget passed different post types tests", "kp_widget failed different post types tests");
     $testObj->render();
 }
 /**
  * Test kp_runRecommender returns the same results as the the recommender
  **/
 public function test8()
 {
     kp_resetVisitData();
     try {
         // Set up test data in database
         $testData = new kp_testData();
         $testPostIDs = $testData->insertTestPosts(10);
         $tK = array_keys($testPostIDs);
         // User Group #1
         $user1 = new kp_testUser(array($tK[0], $tK[1], $tK[2]), array());
         $user2 = new kp_testUser(array($tK[0], $tK[1], $tK[2], $tK[3]), array());
         // User Group #2
         $user3 = new kp_testUser(array($tK[4], $tK[5], $tK[6]), array());
         $user4 = new kp_testUser(array($tK[4], $tK[5], $tK[6]), array());
         // Get the recommendation from the recommender
         $user1->recommender->run(1, 1);
         // Get the recommendation from the lib function
         $posts = kp_getRecommendedWP_Posts(1, $user1->ipAddress, $user1->userAgent);
         $test = $user1->recommender->posts[0]->post_id == $posts[0]->post_id;
         $user1->deleteVisitData();
         $user2->deleteVisitData();
         $user3->deleteVisitData();
         $user4->deleteVisitData();
         $testData->deleteAllTestPosts();
     } catch (Exception $e) {
         $test = false;
     }
     $testObj = new kp_test("Test 8", $test, "results from recommendation function match results from recommendation engine", "results from recommendation function do not match results from recommendation engine");
     $testObj->render();
     kp_resetVisitData();
 }
// A sample post to use for testing
$numTestsToInsert = -1;
// Set to <= 0 if you want to insert data
$testRenderer = false || isset($_GET["testAll"]) && $_GET["testAll"] == "true";
$testRecommendedPost = false || isset($_GET["testAll"]) && $_GET["testAll"] == "true";
$testRecommender = false || isset($_GET["testAll"]) && $_GET["testAll"] == "true";
$testWidget = false || isset($_GET["testAll"]) && $_GET["testAll"] == "true";
$testPlugin = false || isset($_GET["testAll"]) && $_GET["testAll"] == "true";
$testRenderer = $testRenderer || isset($_GET["testRenderer"]) && $_GET["testRenderer"] == "true";
$testRecommendedPost = $testRecommendedPost || isset($_GET["testRecommendedPost"]) && $_GET["testRecommendedPost"] == "true";
$testRecommender = $testRecommender || isset($_GET["testRecommender"]) && $_GET["testRecommender"] == "true";
$testWidget = $testWidget || isset($_GET["testWidget"]) && $_GET["testWidget"] == "true";
$testPlugin = $testPlugin || isset($_GET["testPlugin"]) && $_GET["testPlugin"] == "true";
if ($numTestsToInsert > 0) {
    echo "<div>Inserting {$numTestsToInsert} Test Post(s)...</div>";
    $testDataObj = new kp_testData();
    $testDataObj->insertTestPosts($numTestsToInsert);
}
if ($testRenderer) {
    // Test the renderer class
    echo "<div>Testing classes\\renderer</div>";
    $renderTestObj = new kp_test_renderer();
    $renderTestObj->runTests();
}
if ($testRecommendedPost) {
    // Test the recommendedPost class
    echo "<div>Testing classes\\recommendedPost</div>";
    $recommendedPostTestObj = new kp_test_recommendedPost($testPostID);
    $recommendedPostTestObj->runTests();
}
if ($testRecommender) {