package org.apache.lucene.queryParser.core.nodes;

import org.apache.lucene.queryParser.core.nodes.ParametricQueryNode.CompareOperator;
import org.apache.lucene.util.LuceneTestCase;

public class TestParametricRangeQueryNode extends LuceneTestCase {

  public void testConstructor() {
    ParametricQueryNode pqn1 = new ParametricQueryNode("field", CompareOperator.GE, "value1", 0, 1);
    ParametricQueryNode pqn2 = new ParametricQueryNode("field", CompareOperator.LE, "value2", 2, 3);
    
    // same field
    new ParametricRangeQueryNode(pqn1, pqn2);
    
    // null is also considered a valid field
    pqn1.setField(null);
    pqn2.setField(null);
    new ParametricRangeQueryNode(pqn1, pqn2);
    
    try {
      pqn1.setField(null);
      pqn2.setField("field");
      new ParametricRangeQueryNode(pqn1, pqn2);
      
      fail("different field, should throw exception");
      
    } catch (IllegalArgumentException ex) { /* expected */ }
    
    try {
      pqn1.setField("field1");
      pqn2.setField("field2");
      new ParametricRangeQueryNode(pqn1, pqn2);
      
      fail("different field, should throw exception");
      
    } catch (IllegalArgumentException ex) { /* expected */ }
    
  }
  
}
