| /* |
| * Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You under the Apache License, Version 2.0 |
| * (the "License"); you may not use this file except in compliance with |
| * the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package org.apache.solr.schema; |
| |
| import org.apache.solr.SolrTestCaseJ4; |
| import org.junit.BeforeClass; |
| import org.junit.Test; |
| |
| public class BooleanFieldTest extends SolrTestCaseJ4 { |
| @BeforeClass |
| public static void beforeClass() throws Exception { |
| initCore("solrconfig-basic.xml", "schema15.xml"); |
| } |
| |
| // Note, docValues-based boolean tests are tested elsewhere refering to more appropriate schemas |
| @Test |
| public void testBoolField() { |
| |
| // found an odd case when adding booleans to docValues and noticed that we didn't have any boolean |
| // specific tests. Only caught the odd case by accident so let's have a place for explicit tests |
| assertU(adoc("id", "0")); // missing |
| assertU(adoc("id", "1", "bind", "true", "bsto", "true", "bindsto", "true", "bindstom", "true", "bindstom", "false")); |
| assertU(adoc("id", "2", "bind", "false", "bsto", "false", "bindsto", "false", "bindstom", "false", "bindstom", "true")); |
| assertU(adoc("id", "3", "bind", "false")); |
| assertU(adoc("id", "4", "bsto", "false")); |
| assertU(adoc("id", "5", "bindsto", "true")); |
| assertU(adoc("id", "6", "bindstom", "true")); |
| assertU(commit()); |
| |
| assertQ(req("q", "*:*", "sort", "id asc", "fl", "id,bind,bsto,bindsto,bindstom") |
| ,"count(//result/doc[1]/bool[@name='bind'])=0" |
| ,"count(//result/doc[1]/bool[@name='bsto'])=0" |
| ,"count(//result/doc[1]/bool[@name='bindsto'])=0" |
| ,"count(//result/doc[2]/bool[@name='bind'])=0" |
| ,"count(//result/doc[3]/bool[@name='bind'])=0" |
| ,"//result/doc[2]/bool[@name='bsto'][.='true']" |
| ,"//result/doc[2]/bool[@name='bindsto'][.='true']" |
| ,"//result/doc[3]/bool[@name='bsto'][.='false']" |
| ,"//result/doc[3]/bool[@name='bindsto'][.='false']" |
| ,"//result/doc[2]/arr[@name='bindstom']/bool[1][.='true']" |
| ,"//result/doc[2]/arr[@name='bindstom']/bool[2][.='false']" |
| ,"//result/doc[3]/arr[@name='bindstom']/bool[1][.='false']" |
| ,"//result/doc[3]/arr[@name='bindstom']/bool[2][.='true']" |
| |
| ); |
| |
| // Make sure faceting is behaving. |
| assertQ(req("q", "*:*", "facet", "true", |
| "facet.field", "bind", |
| "facet.field", "bsto", |
| "facet.field", "bindsto", |
| "facet.field", "bindstom"), |
| "//lst[@name='bind']/int[@name='false'][.='2']", |
| "//lst[@name='bind']/int[@name='true'][.='1']", |
| "//lst[@name='bsto'][not(node())]", |
| "//lst[@name='bsto'][not(node())]", |
| "//lst[@name='bindsto']/int[@name='false'][.='1']", |
| "//lst[@name='bindsto']/int[@name='true'][.='2']", |
| "//lst[@name='bindstom']/int[@name='false'][.='2']", |
| "//lst[@name='bindstom']/int[@name='true'][.='3']"); |
| } |
| |
| } |