//**************************************************************************
//
//
//                       National Institute Of Standards and Technology
//                                     DTS Version 1.0
//
//                             ProcessingInstruction Interface
//**************************************************************************

function ProcessingInstruction()
{
   var tests = new Array (core0001P(), core0002P(), core0003P());

   return tests;
}

//------------------------ test case core-0001P ------------------------
//
// Testing feature - The "target" attribute is the target of the
//                   processing instruction.  It is the first token that 
//                   follows the markup of the processing instruction.
//
// Testing approach - Retrieve the ProcessingInstruction node located 
//                    inside the entity named "ent4" and access its
//                    "target" attribute.  Its value should be "PItarget".
//
// Semantic Requirements: 1
//
// Last modification date - May 1, 1999
//
// Written by: Carmelo Montanez
//----------------------------------------------------------------------------

 function core0001P()
 {
   var computedValue = "";
   var expectedValue = "PItarget"
   var testNode = "";
   var pINode = "";

    results = new testResults("Core0001P");

    results.description = "The \"target\" attribute is the target of this "+
                          "processing instruction.  It is the first token "+
                          "token after the markup that begin the processing "+
                          "instruction.";
//
// Retrieve the targeted data and access its "target" attribute.
//
    testNode = getEntity("ent4");
    pINode = testNode.lastChild;
    computedValue = pINode.target;
//
// Write out results
//
    results.expected = expectedValue;
    results.actual = computedValue;

    return results;
}

//------------------------ End test case core-0001P --------------------------
//
//--------------------------- test case core-0002P ---------------------------
//
// Testing feature - The "data" attribute is the content of the
//                   processing instruction.  It starts at the first non
//                   white character following the target and ends at the
//                   character immediately preceding the "?>".
//
// Testing approach - Retrieve the ProcessingInstruction node located
//                    inside the entity named "ent4" and access its "data"
//                    attribute.  Its value should be "PIdata".
//
// Semantic Requirements: 2 
//
// Last modification date - May 1, 1999
//
// Written by: Carmelo Montanez
//----------------------------------------------------------------------------

 function core0002P()
 {
   var computedValue = "";
   var expectedValue = "PIdata"
   var testNode = "";
   var pINode = "";

    results = new testResults("Core0002P");

    results.description = "The \"data\" attribute is the content of the "+
                          "processing instruction.  It starts with the "+
                          "the first non white character following the target "+
                          "and ends with the character immediately preceding "+
                          "the \"?>\".";
//
// Retrieve the targeted data and access its "data" attribute.
//
    testNode = getEntity("ent4");
    pINode = testNode.lastChild;
    computedValue = pINode.data;
//
// Write out results
//
    results.expected = expectedValue;
    results.actual = computedValue;

    return results;
}

//------------------------ End test case core-0002P --------------------------
//
//--------------------------- test case core-0003P ---------------------------
//
// Testing feature - The "data" attribute raises a NO_MODIFICATION_ALLOWED_ERR
//                   DOMEexception when the node is readonly.
//
// Testing approach - Retrieve the ProcessingInstruction node located
//                    inside the entity named "ent4" and attempt to set
//                    a new value for its "data" attribute.  Since descendants
//                    of Entity nodes are readonly, the desired exception
//                    should be raised.  
//
// Semantic Requirements: 3
//
// Last modification date - July 8, 1999
//
// Written by: Carmelo Montanez
//----------------------------------------------------------------------------

 function core0003P()
 {
   var computedValue = "";
   var expectedValue = NO_MODIFICATION_ALLOWED_ERR;
   var testNode = "";
   var pINode = "";

    results = new testResults("Core0003P");

    results.description = "The \"data\" attribute raises a "+
                          "NO_MODIFICATION_ALLOWED_ERR DOMException "+
                          "when the node is readonly."
//
// Retrieve the targeted data.
//
    testNode = getEntity("ent4");
    pINode = testNode.lastChild;
//
// Attempt to modify a readonly node should raise an exception.
//
    try {
         pINode.data = "ABCD";
    }
    catch(DOMException) {
         computedValue = DOMException.description;
    }
//
// Write out results
//
    results.expected = expectedValue;
    results.actual = computedValue;
    
    resetData();
    return results;
}

//------------------------ End test case core-0003P --------------------------