</ProtoDeclare>
<!-- Test success: declarative statement createDeclarativeShapeTests() -->
<Group DEF='DeclarativeGroupExample'>
<Shape>
<
MetadataString DEF='
FindableMetadataStringTest'
name='
findThisNameValue'
value='
"test case"'
containerField='
metadata'/>
<Appearance DEF='DeclarativeAppearanceExample'>
<!-- DeclarativeMaterialExample gets overridden by subsequently added MaterialModulator
ProtoInstance -->
<ProtoInstance name='MaterialModulator' DEF='MyMaterialModulator' containerField='material'/>
</Appearance>
<Cone bottom='false' bottomRadius='0.05' height='0.1'/>
</Shape>
<!-- Test success: declarativeGroup.addChild() singleton pipeline method -->
</Group>
<!-- Test success: declarative statement addChild() -->
<!-- Test success: x3dModel.findNodeByDEF(DeclarativeAppearanceExample) = <Appearance
DEF='DeclarativeAppearanceExample'/> i.e. <Appearance DEF='DeclarativeAppearanceExample'>
<!- - DeclarativeMaterialExample gets overridden by subsequently added MaterialModulator
ProtoInstance - -> <ProtoInstance DEF='MyMaterialModulator' name='MaterialModulator'
containerField='material'/> </Appearance> -->
<!-- Test success: x3dModel.findElementByNameValue(findThisNameValue) = <MetadataString
DEF='FindableMetadataStringTest' name='findThisNameValue' value='"test case"'/> -->
<!-- Test success: x3dModel.findElementByNameValue("ArtDeco01Material", "ProtoDeclare")
found -->
<!-- Test success: x3dModel.findElementByNameValue("MaterialModulator", "ProtoDeclare")
found -->
<!-- Test success: x3dModel.findElementByNameValue("MaterialModulator", "ProtoInstance")
found -->
<Group DEF='TestFieldObjectsGroup'>
<!-- testFieldObjects() results -->
<!-- SFBool default=true, true=true, false=false, negate()=true -->
<!-- MFBool default=, initial=true false true, negate()=false true false -->
<!-- SFFloat default=0.0, initial=1.0, setValue(2)=2.0, setValue(3.0f)=3.0, setValue(4.0)=4.0
-->
<!-- MFFloat default=, initial=1 2 3, append(5)=1 2 3 5, inserts(3,4)(0,0)=0 1 2 3
4 5, append(6)=0 1 2 3 4 5 6, size()=7 -->
<!-- ... get1Value[3]=3.0, remove[1]=0 2 3 4 5 6, set1Value(0,10)=10 2 3 4 5 6, multiply(2)=20
4 6 8 10 12, clear= -->
<!-- SFVec3f default=0 0 0, initial=1 2 3, setValue=4 5 6, multiply(2)=8 10 12, normalize()=0.45584232
0.5698029 0.68376344, regex matches()=true -->
<!-- regex test SFVec3f().matches("1 2 3")=true, regex test SFVec3f().matches("1 2
3 4")=false, regex test (SFRotation.matches("0 0 0 0")=true, failure detecting illegal
(zero axis) rotation value -->
</Group>
<Sound location='0 1.6 0'>
</Sound>
<Sound location='0 1.6 0'>
<!-- set sound-ellipsoid location height at 1.6m to match typical avatar height -->
<MovieTexture containerField='source' description='mpgsys.mpg from ConformanceNist suite'
url='
"mpgsys.mpg" "https://www.web3d.org/x3d/content/examples/ConformanceNist/Appearance/MovieTexture/mpgsys.mpg" '>
<!-- Scene example fragment from https://www.web3d.org/x3d/content/examples/ConformanceNist/Appearance/MovieTexture/mpeg1-systems.x3d
-->
<!-- Expected containerField='source', allowed containerField values="texture" "source"
"back" "bottom" "front" "left" "right" "top" "backTexture" "bottomTexture" "frontTexture"
"leftTexture" "rightTexture" "topTexture" "watchList" -->
</MovieTexture>
</Sound>
<!-- Test success: Anchor.isNode()=true, siteAnchor.isNode()=true -->
<!-- Test success: Anchor.isStatement()=false, siteAnchor.isStatement()=false -->
<!-- Test success: ROUTE.isNode()=false, orbitPositionROUTE.isNode()=false -->
<!-- Test success: ROUTE.isStatement()=true, orbitPositionROUTE.isStatement()=true
-->
<!-- Test success: CommentsBlock.isNode()=false, testComments.isNode()=false -->
<!-- Test failure: CommentsBlock.isStatement()=true, testComments.isStatement()=true
-->
<Shape DEF='ExtrusionShape'>
<!-- ExampleExtrusion isCrossSectionClosed()=true, crossSection='[1.0, 1.0, 1.0, -1.0,
-1.0, -1.0, -1.0, 1.0, 1.0, 1.0]' -->
<!-- ExampleExtrusion isSpineClosed()=false, spine='[0.0, 0.0, 0.0, 0.0, 1.0, 0.0]'
-->
<Appearance DEF='TransparentAppearance'>
<Material transparency='1.0'/>
</Appearance>
<Extrusion DEF='ExampleExtrusion'/>
</Shape>
<Group>
<!-- Test MFNode children array as an ordered list consisting of comments, statements,
ProtoInstance and nodes -->
<ProtoDeclare name='NewWorldInfo'>
<ProtoInterface>
<field name='description' type='SFString' accessType='initializeOnly'/>
</ProtoInterface>
<ProtoBody>
<WorldInfo/>
</ProtoBody>
</ProtoDeclare>
<ProtoInstance name='NewWorldInfo' DEF='Proto1'>
<fieldValue name='description' value='testing 1 2 3'/>
</ProtoInstance>
<Group DEF='Node2'>
<!-- intentionally empty -->
</Group>
<ProtoInstance name='NewWorldInfo' DEF='Proto3'/>
<Transform DEF='Node4'>
<!-- intentionally empty -->
</Transform>
<!-- Test satisfactorily creates MFNode children array as an ordered list with mixed
content -->
</Group>
<ProtoDeclare name='ShaderProto'>
<ProtoBody>
<ProgramShader containerField='shaders'/>
</ProtoBody>
</ProtoDeclare>
<Shape>
<Appearance>
<!-- Test MFNode shaders array as an ordered list consisting of comments, ProtoInstance
and nodes -->
<!-- Test satisfactorily creates MFNode shaders array as an ordered list with mixed
content -->
<
ProgramShader DEF='
TestShader1'
containerField='
shaders'>
<
ShaderProgram DEF='
TestShader2'
type='
VERTEX'
containerField='
programs'>
</
ShaderProgram>
</
ProgramShader>
<ProtoInstance name='ShaderProto' DEF='TestShader3' containerField='shaders'/>
<
ComposedShader DEF='
TestShader4'
containerField='
shaders'>
<
ShaderPart DEF='
TestShader5'
type='
VERTEX'
containerField='
parts'>
</
ShaderPart>
</
ComposedShader>
</Appearance>
</Shape>
<Transform DEF='SpecialtyNodes'>
<CADLayer>
<CADAssembly>
<CADPart>
<CADFace/>
</CADPart>
</CADAssembly>
</CADLayer>
<EspduTransform containerField='children'/>
<ReceiverPdu receivedPower='0.0' containerField='children'/>
<SignalPdu containerField='children'/>
<TransmitterPdu relativeAntennaLocation='0 0 0' transmitFrequencyBandwidth='0.0' containerField='children'/>
<
DISEntityManager containerField='
children'>
<DISEntityTypeMapping/>
</
DISEntityManager>
</Transform>