import Ġparse . ast .* Ċ import Ġorg . junit . Assert Ċ import Ġorg . junit . Test Ċ import Ġparse . NB TD oc Parser Ċ import Ġjava . io . File Ċ Ċ class ĠParse File Test Ġ{ ĊĊ ĉ @ Test Ċ ĉ fun Ġsmall File Root () Ġ{ Ċĉ ĉ eq File ( Ċĉĉ ĉ " small _ file _ root . nb td oc ", Ċĉĉ ĉ N bt Doc File Def ( Ċĉĉĉ ĉ uses Ġ= ĠlistOf ( Ċĉĉĉĉ ĉ Use Def ( Ċĉĉĉĉĉ ĉ export Ġ= Ġtrue , Ċĉĉĉĉĉ ĉ path Ġ= ĠlistOf ( Ċĉĉĉĉĉĉ ĉ Path Part . Regular ( part Ġ= Ġ" small _ file _ sibling "), Ċĉĉĉĉĉĉ ĉ Path Part . Regular ( part Ġ= Ġ" Specific Compound ") Ċĉĉĉĉĉ ĉ ) Ċĉĉĉĉ ĉ ) Ċĉĉĉ ĉ ), Ċĉĉĉ ĉ compound s Ġ= ĠlistOf ( Ċĉĉĉĉ ĉ Compound Def ( Ċĉĉĉĉĉ ĉ description Ġ= Ġ"", Ċĉĉĉĉĉ ĉ name Ġ= Ġ" My Compound ", Ċĉĉĉĉĉ ĉ extend Ġ= Ġnull , Ċĉĉĉĉĉ ĉ fields Ġ= ĠlistOf ( Ċĉĉĉĉĉĉ ĉ Field ( Ċĉĉĉĉĉĉĉ ĉ description Ġ= Ġ"", Ġname Ġ= Ġ" Foo ", ĠfieldType Ġ= ĠFT String Ċĉĉĉĉĉĉ ĉ ) Ċĉĉĉĉĉ ĉ ) Ċĉĉĉĉ ĉ ) Ċĉĉĉ ĉ ), Ċĉĉĉ ĉ enums Ġ= ĠlistOf ( Ċĉĉĉĉ ĉ E Byte ( Ċĉĉĉĉĉ ĉ description Ġ= Ġ"", Ċĉĉĉĉĉ ĉ name Ġ= Ġ" My Enum ", Ċĉĉĉĉĉ ĉ values Ġ= ĠlistOf ( Ċĉĉĉĉĉĉ ĉ EV Byte ( description Ġ= Ġ"", Ġname Ġ= Ġ" Var One ", Ġvalue Ġ= Ġ 1 ), Ċĉĉĉĉĉĉ ĉ EV Byte ( description Ġ= Ġ"", Ġname Ġ= Ġ" Var Two ", Ġvalue Ġ= Ġ 2 ), Ċĉĉĉĉĉĉ ĉ EV Byte ( description Ġ= Ġ"", Ġname Ġ= Ġ" Var Three ", Ġvalue Ġ= Ġ 5 ) Ċĉĉĉĉĉ ĉ ) Ċĉĉĉĉ ĉ ) Ċĉĉĉ ĉ ), Ċĉĉĉ ĉ descri bes Ġ= ĠlistOf ( Ċĉĉĉĉ ĉ Describe Def ( Ċĉĉĉĉĉ ĉ id Ġ= ĠlistOf ( Path Part . Regular ( part Ġ= Ġ" My Compound ")), Ċĉĉĉĉĉ ĉ describe Type Ġ= ĠIdentifier ( namespace Ġ= Ġ" minecraft ", Ġpath Ġ= Ġ" item "), Ċĉĉĉĉĉ ĉ targets Ġ= Ġnull Ċĉĉĉĉ ĉ ) Ċĉĉĉ ĉ ), Ċĉĉĉ ĉ mods Ġ= ĠlistOf ( Mod Def ( mod Ġ= Ġ" small _ file _ sibling ")) Ċĉĉ ĉ ) Ċĉ ĉ ) Ċ ĉ } ĊĊ ĉ @ Test Ċ ĉ fun Ġsmall File Sibling () Ġ{ Ċĉ ĉ eq File ( Ċĉĉ ĉ " small _ file _ sibling . nb td oc ", Ċĉĉ ĉ N bt Doc File Def ( Ċĉĉĉ ĉ uses Ġ= ĠlistOf ( Ċĉĉĉĉ ĉ Use Def ( Ċĉĉĉĉĉ ĉ export Ġ= Ġfalse , Ċĉĉĉĉĉ ĉ path Ġ= ĠlistOf ( Path Part . Super , ĠPath Part . Regular ( part Ġ= Ġ" My Compound ")) Ċĉĉĉĉ ĉ ), ĊĊĉĉĉĉ ĉ Use Def ( Ċĉĉĉĉĉ ĉ export Ġ= Ġfalse , Ċĉĉĉĉĉ ĉ path Ġ= ĠlistOf ( Ċĉĉĉĉĉĉ ĉ Path Part . Super , ĠPath Part . Regular ( part Ġ= Ġ" My Enum ") Ċĉĉĉĉĉ ĉ ) Ċĉĉĉĉ ĉ ) ĊĊĉĉĉ ĉ ), Ċĉĉĉ ĉ compound s Ġ= ĠlistOf ( Ċĉĉĉĉ ĉ Compound Def ( Ċĉĉĉĉĉ ĉ description Ġ= Ġ"", Ċĉĉĉĉĉ ĉ name Ġ= Ġ" Specific Compound ", Ċĉĉĉĉĉ ĉ extend Ġ= ĠCompound Super . Compound ( listOf ( Ċĉĉĉĉĉĉ ĉ Path Part . Regular ( part Ġ= Ġ" My Compound ") Ċĉĉĉĉĉ ĉ )), Ċĉĉĉĉĉ ĉ fields Ġ= ĠlistOf ( Ċĉĉĉĉĉĉ ĉ Field ( description Ġ= Ġ"", Ġname Ġ= Ġ" Bar ", ĠfieldType Ġ= ĠFT Boolean ) Ċĉĉĉĉĉĉ ĉ , Ċĉĉĉĉĉĉ ĉ Field ( Ċĉĉĉĉĉĉĉ ĉ description Ġ= Ġ"", Ċĉĉĉĉĉĉĉ ĉ name Ġ= Ġ" bru h ", Ċĉĉĉĉĉĉĉ ĉ fieldType Ġ= ĠFT Named ( path Ġ= ĠlistOf ( Path Part . Regular ( part Ġ= Ġ" My Enum "))) Ċĉĉĉĉĉĉ ĉ ) Ċĉĉĉĉĉ ĉ ) Ċĉĉĉĉ ĉ ) Ċĉĉĉ ĉ ), Ċĉĉĉ ĉ enums Ġ= ĠlistOf (), Ċĉĉĉ ĉ descri bes Ġ= ĠlistOf ( Ċĉĉĉĉ ĉ Describe Def ( Ċĉĉĉĉĉ ĉ id Ġ= ĠlistOf ( Ċĉĉĉĉĉĉ ĉ Path Part . Regular ( part Ġ= Ġ" Specific Compound ") Ċĉĉĉĉĉ ĉ ), Ċĉĉĉĉĉ ĉ describe Type Ġ= ĠIdentifier ( namespace Ġ= Ġ" minecraft ", Ġpath Ġ= Ġ" item "), Ċĉĉĉĉĉ ĉ targets Ġ= ĠlistOf ( Identifier ( namespace Ġ= Ġ" minecraft ", Ġpath Ġ= Ġ" stick ")) Ċĉĉĉĉ ĉ ) Ċĉĉĉ ĉ ), Ċĉĉĉ ĉ mods Ġ= ĠlistOf () Ċĉĉ ĉ ) Ċĉ ĉ ) Ċ ĉ } ĊĊ ĉ @ Test Ċ ĉ fun Ġfull File () Ġ{ Ċĉ ĉ eq File ( Ċĉĉ ĉ " full _ file . nb td oc ", Ċĉĉ ĉ N bt Doc File Def ( Ċĉĉĉ ĉ uses Ġ= ĠlistOf ( Ċĉĉĉĉ ĉ Use Def ( Ċĉĉĉĉĉ ĉ export Ġ= Ġfalse , Ċĉĉĉĉĉ ĉ path Ġ= ĠlistOf ( Path Part . Regular ( part Ġ= Ġ" minecraft "), ĠPath Part . Regular ( part Ġ= Ġ" entity ")) Ċĉĉĉĉ ĉ ), Ċĉĉĉĉ ĉ Use Def ( Ċĉĉĉĉĉ ĉ export Ġ= Ġtrue , Ċĉĉĉĉĉ ĉ path Ġ= ĠlistOf ( Ċĉĉĉĉĉĉ ĉ Path Part . Regular ( part Ġ= Ġ" minecraft "), Ċĉĉĉĉĉĉ ĉ Path Part . Regular ( part Ġ= Ġ" entity "), Ċĉĉĉĉĉĉ ĉ Path Part . Regular ( part Ġ= Ġ" V ill ager ") Ċĉĉĉĉĉ ĉ ) Ċĉĉĉĉ ĉ ) Ċĉĉĉ ĉ ), Ġcompound s Ġ= ĠlistOf ( Ċĉĉĉĉ ĉ Compound Def ( Ċĉĉĉĉĉ ĉ description Ġ= Ġ""" ĠA Ġmob Ġwhich Ġcan Ġbe Ġb red . ĠIt Ġhas Ġno Ġother Ġunique ĠN BT """ Ċĉĉĉĉĉ ĉ , Ċĉĉĉĉĉ ĉ name Ġ= Ġ" B reed able ", Ċĉĉĉĉĉ ĉ extend Ġ= ĠCompound Super . Compound ( listOf ( Path Part . Regular ( part Ġ= Ġ" entity "), ĠPath Part . Regular ( part Ġ= Ġ" Mob Base ")) ), Ċĉĉĉĉĉ ĉ fields Ġ= ĠlistOf ( Ċĉĉĉĉĉĉ ĉ Field ( Ċĉĉĉĉĉĉĉ ĉ description Ġ= Ġ""" ĠIf Ġthe Ġanimal Ġhas Ġbeen Ġfed """ Ċĉĉĉĉĉĉĉ ĉ , Ġname Ġ= Ġ" In Lo ve ", ĠfieldType Ġ= ĠFT Number ( primitive Ġ= ĠN PT Int ( range Ġ= Ġnull )) Ċĉĉĉĉĉĉ ĉ ), ĠField ( Ċĉĉĉĉĉĉĉ ĉ description Ġ= Ġ""" ĠThe Ġage Ġof Ġthe Ġanimal """ Ċĉĉĉĉĉĉĉ ĉ , Ġname Ġ= Ġ" Age ", ĠfieldType Ġ= ĠFT Number ( primitive Ġ= ĠN PT Int ( range Ġ= Ġnull )) Ċĉĉĉĉĉĉ ĉ ), ĠField ( Ċĉĉĉĉĉĉĉ ĉ description Ġ= Ġ""" ĠThe Ġage Ġof Ġthe Ġanimal . ĠWill Ġnot Ġincrement """ Ċĉĉĉĉĉĉĉ ĉ , Ġname Ġ= Ġ" For ced Age ", ĠfieldType Ġ= ĠFT Number ( primitive Ġ= ĠN PT Int ( range Ġ= Ġnull )) Ċĉĉĉĉĉĉ ĉ ), ĠField ( Ċĉĉĉĉĉĉĉ ĉ description Ġ= Ġ""" ĠThe ĠUUID Least Ġof Ġthe Ġplayer Ġwho Ġfed Ġthe Ġanimal """ Ċĉĉĉĉĉĉĉ ĉ , Ġname Ġ= Ġ" Lo ve Cause Least ", ĠfieldType Ġ= ĠFT Number ( primitive Ġ= ĠN PT Long ( range Ġ= Ġnull )) Ċĉĉĉĉĉĉ ĉ ), ĠField ( Ċĉĉĉĉĉĉĉ ĉ description Ġ= Ġ""" ĠThe ĠUUID Most Ġof Ġthe Ġplayer Ġwho Ġfed Ġthe Ġanimal """ Ċĉĉĉĉĉĉĉ ĉ , Ġname Ġ= Ġ" Lo ve Cause Most ", ĠfieldType Ġ= ĠFT Number ( primitive Ġ= ĠN PT Long ( range Ġ= Ġnull )) Ċĉĉĉĉĉĉ ĉ ) Ċĉĉĉĉĉ ĉ ) Ċĉĉĉĉ ĉ ), Ċĉĉĉĉ ĉ Compound Def ( Ċĉĉĉĉĉ ĉ description Ġ= Ġ"", Ċĉĉĉĉĉ ĉ name Ġ= Ġ" She ep ", Ċĉĉĉĉĉ ĉ extend Ġ= ĠCompound Super . Compound ( listOf ( Path Part . Regular ( part Ġ= Ġ" B reed able ")) ), Ċĉĉĉĉĉ ĉ fields Ġ= ĠlistOf ( Ċĉĉĉĉĉĉ ĉ Field ( Ċĉĉĉĉĉĉĉ ĉ description Ġ= Ġ"", Ġname Ġ= Ġ" She ared ", ĠfieldType Ġ= ĠFT Boolean Ċĉĉĉĉĉĉ ĉ ), Ċĉĉĉĉĉĉ ĉ Field ( Ċĉĉĉĉĉĉĉ ĉ description Ġ= Ġ"", Ċĉĉĉĉĉĉĉ ĉ name Ġ= Ġ" Color ", Ċĉĉĉĉĉĉĉ ĉ fieldType Ġ= ĠFT Named ( path Ġ= ĠlistOf ( Path Part . Regular ( part Ġ= Ġ" Color "))) Ċĉĉĉĉĉĉ ĉ ) Ċĉĉĉĉĉ ĉ ) Ċĉĉĉĉ ĉ ), ĠCompound Def ( Ċĉĉĉĉĉ ĉ description Ġ= Ġ"", Ċĉĉĉĉĉ ĉ name Ġ= Ġ" P anda ", Ċĉĉĉĉĉ ĉ extend Ġ= ĠCompound Super . Compound ( listOf ( Path Part . Regular ( part Ġ= Ġ" B reed able ")) ), Ċĉĉĉĉĉ ĉ fields Ġ= ĠlistOf ( Ċĉĉĉĉĉĉ ĉ Field ( Ċĉĉĉĉĉĉĉ ĉ description Ġ= Ġ""" ĠThe Ġdisplayed Ġgene Ċ ĠIf Ġthis Ġgene Ġis Ġre cess ive Ġ'( r )' Ġand Ġ' Hidden Gene ' Ġis Ġnot Ġthe Ġsame , Ġthe Ġp anda Ġwill Ġdisplay Ġthe Ġ' normal ' Ġgene """ Ċĉĉĉĉĉĉĉ ĉ , Ġname Ġ= Ġ" Main Gene ", ĠfieldType Ġ= ĠFT Named ( path Ġ= ĠlistOf ( Path Part . Regular ( part Ġ= Ġ" Gene "))) Ċĉĉĉĉĉĉ ĉ ), ĠField ( Ċĉĉĉĉĉĉĉ ĉ description Ġ= Ġ""" ĠThe Ġhidden Ġgene """ Ċĉĉĉĉĉĉĉ ĉ , Ċĉĉĉĉĉĉĉ ĉ name Ġ= Ġ" Hidden Gene ", Ċĉĉĉĉĉĉĉ ĉ fieldType Ġ= ĠFT Named ( path Ġ= ĠlistOf ( Path Part . Regular ( part Ġ= Ġ" Gene "))) Ċĉĉĉĉĉĉ ĉ ) Ċĉĉĉĉĉ ĉ ) Ċĉĉĉĉ ĉ ) Ċĉĉĉ ĉ ), Ċĉĉĉ ĉ enums Ġ= ĠlistOf ( Ċĉĉĉĉ ĉ E Byte ( Ċĉĉĉĉĉ ĉ description Ġ= Ġ"", Ġname Ġ= Ġ" Color ", Ġvalues Ġ= ĠlistOf ( Ċĉĉĉĉĉĉ ĉ EV Byte ( Ċĉĉĉĉĉĉĉ ĉ description Ġ= Ġ""" Ġetc .""" Ċĉĉĉĉĉĉĉ ĉ , Ġname Ġ= Ġ" White ", Ġvalue Ġ= Ġ 0 Ċĉĉĉĉĉĉ ĉ ) Ċĉĉĉĉĉ ĉ ) Ċĉĉĉĉ ĉ ), ĠE String ( Ċĉĉĉĉĉ ĉ description Ġ= Ġ"", Ġname Ġ= Ġ" Gene ", Ġvalues Ġ= ĠlistOf ( Ċĉĉĉĉĉĉ ĉ EV String ( Ċĉĉĉĉĉĉĉ ĉ description Ġ= Ġ""" ĠThe Ġnormal Ġgene Ġ( d ) """ Ċĉĉĉĉĉĉĉ ĉ , Ġname Ġ= Ġ" Normal ", Ġvalue Ġ= Ġ" normal " Ċĉĉĉĉĉĉ ĉ ), ĠEV String ( Ċĉĉĉĉĉĉĉ ĉ description Ġ= Ġ""" ĠThe Ġlazy Ġgene Ġ( d ) """ Ċĉĉĉĉĉĉĉ ĉ , Ġname Ġ= Ġ" Lazy ", Ġvalue Ġ= Ġ" lazy " Ċĉĉĉĉĉĉ ĉ ), ĠEV String ( Ċĉĉĉĉĉĉĉ ĉ description Ġ= Ġ""" ĠThe Ġwor ried Ġgene Ġ( d ) """ Ċĉĉĉĉĉĉĉ ĉ , Ġname Ġ= Ġ" W or ried ", Ġvalue Ġ= Ġ" wor ried " Ċĉĉĉĉĉĉ ĉ ), ĠEV String ( Ċĉĉĉĉĉĉĉ ĉ description Ġ= Ġ""" ĠThe Ġplay ful Ġgene Ġ( d ) """ Ċĉĉĉĉĉĉĉ ĉ , Ġname Ġ= Ġ" Play ful ", Ġvalue Ġ= Ġ" play ful " Ċĉĉĉĉĉĉ ĉ ), ĠEV String ( Ċĉĉĉĉĉĉĉ ĉ description Ġ= Ġ""" ĠThe Ġbrown Ġgene Ġ( r ) """ Ċĉĉĉĉĉĉĉ ĉ , Ġname Ġ= Ġ" B rown ", Ġvalue Ġ= Ġ" brown " Ċĉĉĉĉĉĉ ĉ ), ĠEV String ( Ċĉĉĉĉĉĉĉ ĉ description Ġ= Ġ""" ĠThe Ġweak Ġgene Ġ( r ) """ Ċĉĉĉĉĉĉĉ ĉ , Ġname Ġ= Ġ" Weak ", Ġvalue Ġ= Ġ" weak " Ċĉĉĉĉĉĉ ĉ ), ĠEV String ( Ċĉĉĉĉĉĉĉ ĉ description Ġ= Ġ""" ĠThe Ġag gressive Ġgene Ġ( d ) """ Ċĉĉĉĉĉĉĉ ĉ , Ġname Ġ= Ġ" Aggressive ", Ġvalue Ġ= Ġ" ag gressive " Ċĉĉĉĉĉĉ ĉ ) Ċĉĉĉĉĉ ĉ ) Ċĉĉĉĉ ĉ ) Ċĉĉĉ ĉ ), Ċĉĉĉ ĉ descri bes Ġ= ĠlistOf ( Ċĉĉĉĉ ĉ Describe Def ( Ċĉĉĉĉĉ ĉ id Ġ= ĠlistOf ( Path Part . Regular ( part Ġ= Ġ" B reed able ")), Ċĉĉĉĉĉ ĉ describe Type Ġ= ĠIdentifier ( namespace Ġ= Ġ" minecraft ", Ġpath Ġ= Ġ" entity "), Ċĉĉĉĉĉ ĉ targets Ġ= ĠlistOf ( Ċĉĉĉĉĉĉ ĉ Identifier ( namespace Ġ= Ġ" minecraft ", Ġpath Ġ= Ġ" cow "), Ċĉĉĉĉĉĉ ĉ Identifier ( namespace Ġ= Ġ" minecraft ", Ġpath Ġ= Ġ" pig ") Ċĉĉĉĉĉ ĉ ) Ċĉĉĉĉ ĉ ), Ċĉĉĉĉ ĉ Describe Def ( Ċĉĉĉĉĉ ĉ id Ġ= ĠlistOf ( Path Part . Regular ( part Ġ= Ġ" She ep ")), Ċĉĉĉĉĉ ĉ describe Type Ġ= ĠIdentifier ( namespace Ġ= Ġ" minecraft ", Ġpath Ġ= Ġ" entity "), Ċĉĉĉĉĉ ĉ targets Ġ= ĠlistOf ( Identifier ( namespace Ġ= Ġ" minecraft ", Ġpath Ġ= Ġ" she ep ")) Ċĉĉĉĉ ĉ ), Ċĉĉĉĉ ĉ Describe Def ( Ċĉĉĉĉĉ ĉ id Ġ= ĠlistOf ( Path Part . Regular ( part Ġ= Ġ" P anda ")), Ċĉĉĉĉĉ ĉ describe Type Ġ= ĠIdentifier ( namespace Ġ= Ġ" minecraft ", Ġpath Ġ= Ġ" entity "), Ċĉĉĉĉĉ ĉ targets Ġ= ĠlistOf ( Identifier ( namespace Ġ= Ġ" minecraft ", Ġpath Ġ= Ġ" p anda ")) Ċĉĉĉĉ ĉ ) Ċĉĉĉ ĉ ), Ċĉĉĉ ĉ mods Ġ= ĠlistOf () Ċĉĉ ĉ ) ĊĊĉ ĉ ) Ċ ĉ } ĊĊ ĉ comp anion Ġobject Ġ{ Ċĉ ĉ fun Ġparse ( str : ĠString ): ĠNbt Doc File Def Ġ{ Ċĉĉ ĉ val Ġresult Ġ= ĠNB TD oc Parser . parse ( str ) Ċĉĉ ĉ assert ( result . success ) Ġ{ Ġ" Parsing Ġwas Ġun successful : Ġ$ result \ n err orm sg : Ġ${ result . error _ message }" Ġ} Ċĉĉ ĉ assert ( result . full _ match ) Ġ{ Ġ" Parsing Ġwas Ġnot Ġcomplete : Ġ$ result \ n err orm sg : Ġ${ result . error _ message }" Ġ} Ċĉĉ ĉ assert ( result . value _ stack . size Ġ== Ġ 1 ) Ġ{ Ġ" Parsing Ġdid Ġnot Ġresult Ġin Ġa Ġsize Ġ 1 Ġstack ! ĠActual Ġsize :${ result . value _ stack . size }\ n ${ result . value _ stack . toList () }" Ġ} Ċĉĉ ĉ return Ġresult . value _ stack [ 0 ] Ġas ĠNbt Doc File Def Ċĉ ĉ } ĊĊĉ ĉ fun Ġeq ( str : ĠString , Ġn bt Doc File : ĠNbt Doc File Def ) Ġ{ Ċĉĉ ĉ Assert . assertEquals ( nbt Doc File , Ġparse ( str )) Ċĉ ĉ } ĊĊĉ ĉ fun Ġeq File ( file : ĠString , Ġn bt Doc File : ĠNbt Doc File Def ) Ġ= Ċĉĉ ĉ eq ( File ( this :: class . java . getResource ( file ). file ). read Text (), Ġn bt Doc File ) Ċ ĉ } Ċ }