<div><div dir="auto">Without anchors, how do you insure all values are checked?   Seems like only the first few, or some in the middle will be validated.</div></div><div dir="auto"><br></div><div dir="auto">FYI </div><div><br><div class="gmail_quote"><div dir="ltr">On Tue, Jul 24, 2018 at 2:09 AM Don Brutzman <<a href="mailto:brutzman@nps.edu">brutzman@nps.edu</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On 7/23/2018 1:28 PM, Andreas Plesch wrote:<br>
> I suppose it is necessary to look at (1.6MB of) this stylesheet:<br>
<br>
everyday occurrence for me... 8)<br>
<br>
> <a href="https://sourceforge.net/p/x3d/code/27143/tree/www.web3d.org/x3d/stylesheets/CreateX3dSceneAccessInterfaceJava.xslt" rel="noreferrer" target="_blank">https://sourceforge.net/p/x3d/code/27143/tree/www.web3d.org/x3d/stylesheets/CreateX3dSceneAccessInterfaceJava.xslt</a><br>
> <br>
> to see which regexes are used for the tests and how the .matches<br>
> methods are generated ? I could not find much.<br>
<br>
correct.   the original regexes are maintained in X3D Schema (draft versions in X3Dv4)<br>
<br>
        <a href="http://www.web3d.org/specifications" rel="noreferrer" target="_blank">http://www.web3d.org/specifications</a><br>
        <a href="http://www.web3d.org/specifications/X3dSchemaDocumentation4.0/x3d-4.0.html" rel="noreferrer" target="_blank">http://www.web3d.org/specifications/X3dSchemaDocumentation4.0/x3d-4.0.html</a><br>
<br>
- and then autogenerated in X3D Unified Object Model,<br>
<br>
        <a href="http://www.web3d.org/specifications/X3DUOM.html" rel="noreferrer" target="_blank">http://www.web3d.org/specifications/X3DUOM.html</a><br>
        <a href="http://www.web3d.org/specifications/X3dUnifiedObjectModel-4.0.xml" rel="noreferrer" target="_blank">http://www.web3d.org/specifications/X3dUnifiedObjectModel-4.0.xml</a><br>
<br>
- and then autogenerated into X3DJSAIL via that stylesheet above,<br>
<br>
        Package org.web3d.x3d.jsail.fields<br>
        The fields subpackage is provided for creating typed X3D field values and also includes various utility capabilities.<br>
        <a href="http://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/fields/package-summary.html" rel="noreferrer" target="_blank">http://www.web3d.org/specifications/java/javadoc/org/web3d/x3d/jsail/fields/package-summary.html</a><br>
<br>
- and also reflected on X3D Regexes page,<br>
<br>
        <a href="http://www.web3d.org/specifications/X3dRegularExpressions.html" rel="noreferrer" target="_blank">http://www.web3d.org/specifications/X3dRegularExpressions.html</a><br>
        <a href="http://www.web3d.org/specifications/X3dRegularExpressions.html#X3dPatterns" rel="noreferrer" target="_blank">http://www.web3d.org/specifications/X3dRegularExpressions.html#X3dPatterns</a><br>
<br>
- and all crosslinked on X3D Tooltips page in the Field Types Table.<br>
<br>
        <a href="http://www.web3d.org/x3d/content/X3dTooltips.html#FieldTypesTable" rel="noreferrer" target="_blank">http://www.web3d.org/x3d/content/X3dTooltips.html#FieldTypesTable</a><br>
<br>
> The x3d regexes are intended to use within an xml context, I believe.<br>
<br>
Actually they should work in most contexts since the XML values and VRML/ClassicVRML values and JSON values are the same.<br>
<br>
... with one partial difference, VRML and JSON encoding include [ square brackets ] around array values, but that might well be considered as a delimiter of the encoding and not part of the value itself.<br>
<br>
> Within an xml context, the regexes have an implicit start and end<br>
> anchor, see:<br>
> <br>
> <a href="https://www.w3.org/TR/xmlschema11-2/#regexs" rel="noreferrer" target="_blank">https://www.w3.org/TR/xmlschema11-2/#regexs</a><br>
> <br>
> where anchors are explained.<br>
> <br>
> Therefore it may be necessary to add explicit start (^) and end ($)<br>
> anchors to the start and end of each x3d regex when translating to<br>
> jsail java methods with the stylesheet as java does not have the<br>
> implicit anchoring.<br>
<br>
in general i have found that anchors are much more trouble than they seem to be worth.<br>
<br>
in practice, if we ignore/trim leading and training whitespace as part of the re<br>
<br>
> It may turn out that I am not of much use with xslt and java<br>
> improvements. -Andreas<br>
<br>
so far your feedback and alternatives have been very helpful!  i can take care of XSLT and Java, as the above links show they are just one version of a much broader story.<br>
<br>
please keep going as you see fit, this will take several of us to sort out.  the problem is slowly but steadily yielding.  the value to ensure correct X3D content is broadly applicable.<br>
<br>
meanwhile added some more Java unit tests tonight for SFFloat SFDouble and SFTime.  Caught the unnecessary restriction on negative SFTime values, now fixed.<br>
<br>
> On Mon, Jul 23, 2018 at 2:05 AM Don Brutzman <<a href="mailto:brutzman@nps.edu" target="_blank">brutzman@nps.edu</a>> wrote:<br>
>><br>
>> On 7/22/2018 11:40 AM, Don Brutzman wrote:<br>
>>> [...]<br>
>>> Will shift focus to junit5 testing at this point to facilitate experimentation.  We can put our test cases both on <a href="http://regex101.com" rel="noreferrer" target="_blank">regex101.com</a> and also in test suite, both for coverage and for independent checks.<br>
>><br>
>> OK X3DJSAIL finally has a test harness in place.  The invocation for new ant task <junitlauncher> still fails, but direct invocation of the class works.<br>
>><br>
>> X3D Java Scene Access Interface Library (X3DJSAIL) provides a set of unit tests in org.web3d.x3d.tests.FieldObjectTests to check these regexes against default and alternative values.  Initial tests in place for SFBool, SFInt32, SFFloat.<br>
>><br>
>> Source code online at<br>
>> <a href="https://sourceforge.net/p/x3d/code/HEAD/tree/www.web3d.org/x3d/stylesheets/java/src/org/web3d/x3d/tests/FieldObjectTests.java" rel="noreferrer" target="_blank">https://sourceforge.net/p/x3d/code/HEAD/tree/www.web3d.org/x3d/stylesheets/java/src/org/web3d/x3d/tests/FieldObjectTests.java</a><br>
>><br>
>> Ant stylesheets/java/build.xml target in X3DJSAIL project:<br>
>><br>
>> <target name="test.junit5.directly" description="Test X3DJSAIL using JUnit5, direct invocation of code" depends="antVersionCheck"><br>
>>           <java classname="org.web3d.x3d.tests.FieldObjectTests" fork="${fork}"><br>
>>                <classpath><br>
>>                   <pathelement location="${java.classes.dir}" /><br>
>>                   <pathelement location="${env.ANT_HOME}/lib/junit-platform-commons.jar" /><br>
>>                   <pathelement location="${env.ANT_HOME}/lib/junit-platform-engine.jar" /><br>
>>                   <pathelement location="${env.ANT_HOME}/lib/junit-platform-launcher.jar" /><br>
>>                   <pathelement location="${env.ANT_HOME}/lib/opentest4j-1.1.0.jar" /><br>
>>                   <pathelement location="${env.ANT_HOME}/lib/jupiter/junit-jupiter-api.jar" /><br>
>>                   <pathelement location="${env.ANT_HOME}/lib/jupiter/junit-jupiter-engine.jar" /><br>
>>                </classpath><br>
>>           </java><br>
>> </target><br>
>><br>
>> test output:<br>
>> =====================<br>
>> test.junit5.directly:<br>
>> FieldObjectTests start...<br>
>> FieldObjectTests.fieldObjectInitializationsTest() start...<br>
>> Preliminary tests...<br>
>> SFBoolObjectTests...<br>
>> SFInt32ObjectTests...<br>
>> SFFloatObjectTests...<br>
>> FieldObjectTests.fieldObjectInitializationsTest() complete<br>
>> FieldObjectTests complete<br>
>> =====================<br>
>><br>
>> Example excerpt shows how tests are typically structured.  Am striving to show support for detecting both correct and incorrect values.<br>
>><br>
>>       @Test<br>
>>       @DisplayName("Test SFFloatObject single-field single-precision floating-point number")<br>
>>       void SFFloatObjectTests()<br>
>>          {<br>
>>           System.out.println ("SFFloatObjectTests...");<br>
>>           SFFloatObject testSFFloatObject = new SFFloatObject(); // static initializer is tested, might throw exception<br>
>>           assertTrue  (testSFFloatObject.matches(),         "testSFFloatObject.matches() tests that object initialization correctly matches regex");<br>
>>           assertEquals(0.0f, SFFloatObject.DEFAULT_VALUE,   "test correct default value for this field object");<br>
>>           assertTrue  (SFFloatObject.matches(SFFloatObject.DEFAULT_VALUE_STRING),<br>
>>                                                             "SFFloatObject.matches(SFFloatObject.DEFAULT_VALUE_STRING) tests that object initialization correctly matches regex");<br>
>><br>
>>           testSFFloatObject.setValue(1); // returns void because it matches (overrides) Java SAI specification interface<br>
>>           assertEquals( 1.0f,testSFFloatObject.getValue(),  "tests that setting object value to 1 results in value of 1.0f");<br>
>>           testSFFloatObject.setValue(1.0f); // returns void because it matches (overrides) Java SAI specification interface<br>
>>           assertEquals( 1.0f,testSFFloatObject.getValue(),  "tests that setting object value to 1.0f results in value of 1.0f");<br>
>>           testSFFloatObject.setValue(1.0d); // returns void because it matches (overrides) Java SAI specification interface<br>
>>           assertEquals( 1.0f,testSFFloatObject.getValue(),  "tests that setting object value to 1.0d results in value of 1.0f");<br>
>>           testSFFloatObject.setValue(-1); // returns void because it matches (overrides) Java SAI specification interface<br>
>>           assertEquals(-1.0f,testSFFloatObject.getValue(),  "tests that setting object value to -1 results in value of -1.0f");<br>
>><br>
>>           assertTrue  (SFFloatObject.matches( "0"),      "SFFloatObject.matches( \"0\")   tests correct string value");<br>
>>           assertTrue  (SFFloatObject.matches( "1"),      "SFFloatObject.matches( \"1\")   tests correct string value");<br>
>>           assertTrue  (SFFloatObject.matches("-1"),      "SFFloatObject.matches(\"-1\")   tests correct string value");<br>
>>           assertTrue  (SFFloatObject.matches( "0.0"),    "SFFloatObject.matches( \"0.0\") tests correct string value");<br>
>>           assertTrue  (SFFloatObject.matches( "1.0"),    "SFFloatObject.matches( \"1.0\") tests correct string value");<br>
>>           assertTrue  (SFFloatObject.matches("-1.0"),    "SFFloatObject.matches(\"-1.0\") tests correct string value");<br>
>><br>
>>           assertFalse (SFFloatObject.matches("true"),    "SFFloatObject.matches(\"true\") tests incorrect boolean string value");<br>
>>           assertFalse (SFFloatObject.matches("blah"),    "SFFloatObject.matches(\"blah\") tests incorrect alphabetic string value");<br>
>>           assertFalse (SFFloatObject.matches("0 1"),     "SFFloatObject.matches(\"0 1\")  tests incorrect array as string value");<br>
>>           assertFalse (SFFloatObject.matches("0.0 1.0"), "SFFloatObject.matches(\"0.0 1.0\") tests incorrect array as string value");<br>
>>       }<br>
>><br>
>> all the best, Don<br>
>> --<br>
>> Don Brutzman  Naval Postgraduate School, Code USW/Br       <a href="mailto:brutzman@nps.edu" target="_blank">brutzman@nps.edu</a><br>
>> Watkins 270,  MOVES Institute, Monterey CA 93943-5000 USA   +1.831.656.2149<br>
>> X3D graphics, virtual worlds, navy robotics <a href="http://faculty.nps.edu/brutzman" rel="noreferrer" target="_blank">http://faculty.nps.edu/brutzman</a><br>
> <br>
> <br>
> <br>
<br>
<br>
all the best, Don<br>
-- <br>
Don Brutzman  Naval Postgraduate School, Code USW/Br       <a href="mailto:brutzman@nps.edu" target="_blank">brutzman@nps.edu</a><br>
Watkins 270,  MOVES Institute, Monterey CA 93943-5000 USA   +1.831.656.2149<br>
X3D graphics, virtual worlds, navy robotics <a href="http://faculty.nps.edu/brutzman" rel="noreferrer" target="_blank">http://faculty.nps.edu/brutzman</a><br>
<br>
<br>
_______________________________________________<br>
x3d-public mailing list<br>
<a href="mailto:x3d-public@web3d.org" target="_blank">x3d-public@web3d.org</a><br>
<a href="http://web3d.org/mailman/listinfo/x3d-public_web3d.org" rel="noreferrer" target="_blank">http://web3d.org/mailman/listinfo/x3d-public_web3d.org</a><br>
</blockquote></div></div>