[Test Case]
- Module: afk
- Action: Issue
/afkand see the player list. - Target: The display name of an afk player should be modified.
[Test Case]
- Module: afk
- Action: Try to move a player in afk state.
- Target: The
moveableoption should work.
[Test Case]
- Module: anti_build
- Action: Test the functionality of this module.
- Target: Check if the anti type hooks remains the identical semantics.
[Test Case]
- Module: chat
- Action: Enable the
online-modein server.properties file - Target: All of chat-related modules should not break the Mojang's chat signature.
[Test Case]
- Module: chat
- Action: Test the chat-related modules with
Styled Chatmod. - Target: It should work fine with other mods.
[Test Case]
- Module: chat.replace
- Action: Test the
chat replaceandchat triggermodule. - Target: Input
inv - Target: Input
prefix inv - Target: Input
prefix inv<space> - Target: Input
inv suffix - Target: Input
prefix inv item ender suffix inv suffix - Target: Input
prefix prefix item
[Test Case]
- Module: chat.style
- Action: Test the re-entrance of the world in client-side environment.
- Target: The custom message type should not be double registered.
[Test Case]
- Module: color.sign
- Action: Place a
sign blockand write style tags on it, then re-open the sign. - Target: The style tags in the sign block should be
parsedandreversed.
[Test Case]
- Module: command_advice
- Action: Test the advanced use-case of command advice.
- Target: Issue
/repairwithiron_ingot x 8,gold_ingot x 16anddamaged diamond sword. - Target: Issue
/repairwithiron_ingot x 16,gold_ingot x 16andnon-damaged diamond sword. - Target: Issue
/repairwithiron_ingot x 16,gold_ingot x 16anddamaged diamond sword.
[Test Case]
- Module: command_advice
- Action: Test the basic use-case of command advice.
- Target: Issue
/healcommand, you should see the heart particle. - Target: Issue
/say Hello Worldcommand, you should see the replaced version.
[Test Case]
- Module: command_alias
- Action: Test the redirect functionality.
- Target: The redirect target command is a non-leaf command:
/invsee->/view inv - Target: The redirect target command is a leaf command:
/wb->/workbench - Target: The redirect target command already registered (no args):
/help->/warp - Target: The redirect target command already registered (with args):
/workbench->/say - Target: The redirect target command already registered (with branches):
/home->/warp - Target: The chained command redirect (1-hop redirect):
/wb -> /workbench -> /warp - Target: The chained command redirect (2-hop redirect):
/wb -> /workbench -> /say - Target: The duplicated command redirect:
/wb -> /wb -> /wb
[Test Case]
- Module: command_bundle
- Action: Issue
/reload,/fuji reload,/fuji inspect fuji-commandsand/command-bundle list - Target: The bundle commands should be able to register and un-register on the fly.
[Test Case]
- Module: command_cooldown
- Action: Test the compatibility with other modules.
- Target: Issue
/healcommand twice, thecommand warmupshould be performed first, then thecommand cooldown - Target: Issue
/run as player @s healcommand twice, the command cooldown should be performed.
[Test Case]
- Module: command_interactive
- Action: Enable
command_warmupmodule, issue/backcommand. - Target: It should work with un-signed argument type.
[Test Case]
- Module: command_interactive
- Action: Enable
command_warmupmodule, issue/say hicommand. - Target: It should work with signed argument type.
[Test Case]
- Module: command_interactive
- Action: Test the
command_interactivemodule inonline-modeserver. - Target: The packet should not break the client-side signature validation.
[Test Case]
- Module: command_meta.IF
- Action: Issue
/IF execute if block ~ ~-1 ~ minecraft:diamond_block THEN say You are standing on diamond block. ELSE say You are not standing on diamond block.command. - Target: You should not see the red
Test failedin the feedback.
[Test Case]
- Module: command_permission
- Action: Issue
/fuji reloadand/reloadcommands inneoforge single player world. - Target: It should not trigger the Concurrent Modification Exception.
[Test Case]
- Module: command_permission
- Action: Issue
/reloadcommand, and check the client command tree. - Target: The
command_permissionmodule should warp the newly registered commands. - Target: The client-side command tree should be updated.
[Test Case]
- Module: command_rewrite
- Action: Issue
/?command. - Target: It should be rewrite to
/helpcommand.
[Test Case]
- Module: command_scheduler
- Action: Issue
/fuji reloadcommand. - Target: The jobs from command_scheduler module should be re-scheduled.
[Test Case]
- Module: command_toolbox.lore
- Action: Test the codec for text object.
- Target: Issue
/lore set <blue>First Line<newline><green>Second Line - Target: Issue
/lore unset
[Test Case]
- Module: command_toolbox.tppos
- Action: Issue the command
/tppos --z 64 --x 32 --y 128 - Target: The command context should be passed after the command redirection.
[Test Case]
- Module: command_toolbox.tppos
- Action: Teleport to an offline player's location using
/tppos offline - Target: We should be able to make the offline player instance.
- Target: The saved dimension of the offline player should not be reset to minecraft:overworld
[Test Case]
- Module: core
- Action: Consider special states of a player.
- Target: A player may be a fake-player from
carpetmod. - Target: Once a player die, the old ServerPlayerEntity is invalid.
- Target: A player may
disconnectfrom the server. - Target: A player may in
spectatorgame-mode. - Target: If a player is during the transferring of end portal, he is in no dimensions.
[Test Case]
- Module: core
- Action: Consider the possible runtime environments.
- Target: The fabric server-side environment.
- Target: The fabric client-side environment.
- Target: The neo-forge server-side environment. (With
sinytra-connectormod) - Target: The neo-forge client-side environment. (With
sinytra-connectormod) - Target: The hybrid server (forge+bukkit) with
sinytra-connectormod - Target: The GraalVM native image. (Which invalidates the reflection)
[Test Case]
- Module: core
- Action: Create an inventory display that contains a shulker box.
- Target: See if we can go inside the shulker box.
[Test Case]
- Module: core
- Action: Issue
/fujiand clickNext Pagebutton. - Target: You should see the reimu there, the footer should not be over-drawn.
[Test Case]
- Module: core
- Action: Issue
/fujicommand, and pressFkey. - Target: Check the semantics of
SlotGuiInterface#click, ensure it didn't changed in new version.
[Test Case]
- Module: core
- Action: Issue
/fuji, and see thedocument of afk module, thedetails of run moduleand thedetails of skinmodule. - Target: The text parser should parse the text properly from the earliest version to the latest version.
- Target: The URL highlighter should work properly.
- Target: Ensure the
</>doesn't break the style of texts.
[Test Case]
- Module: core
- Action: Issue
/stopin the production environment. - Target: The program should be terminated.
[Test Case]
- Module: core
- Action: Issue
/when-online ...and/json put 1 2 3 ...commands. - Target: The command suggestion optimizer should work fine.
[Test Case]
- Module: core
- Action: Issue the
/warpand/backcommand as normal user. - Target: The default command permission should be registered properly.
- Target: A public command, that shares a common command path prefix with another admin command, should be accessible to normal users.
[Test Case]
- Module: core
- Action: List the command tree of a normal user.
- Target: The command permissions should be handled properly.
[Test Case]
- Module: core
- Action: Modify the
my-commandintomy-command-v2, and issue/fuji reload. - Target: The command descriptor should be able to un-register the old command node in the command tree, even the new command node has different structure compared to the old one.
[Test Case]
- Module: core
- Action: Test the
GUI linkingin paged GUI. - Target: Issue
/fuji, and clickcore-About, then pressEsckey to close the GUIs. - Target: Issue
/fuji, and click theafkmodule, to open the module details GUI, then pressEsckey to close this GUI. - Target: Issue
/fuji, clickNext Pagebutton twice, and click any module here, then pressEsckey to close this GUI.
[Test Case]
- Module: core
- Action: Test the
optional argumentfunctionality. - Target: Issue
/send-title @s --mainTitle "main" - Target: Issue
/send-title @s --mainTitle "main" --subTitle "sub" - Target: Issue
/send-title @s --subTitle "sub" --mainTitle "main"
[Test Case]
- Module: core
- Action: Test the
searchbutton in paged GUI. - Target: Issue
/fuji, and search with keywordatwice, then close the GUI. The same GUI should not be linked. - Target: Issue
/fuji, and search with keywordafk, then close the GUI. The different GUI should be linked. - Target: Issue
/fuji, and search with keywordworld, then the GUI elements in other pages should be initialized for this search.
[Test Case]
- Module: core
- Action: Test the command assistant.
- Target: Change the
cursorusing mouse click, and see the output. - Target: Test the assistant with command redirect
- Target: Test the assistant at the beginning of the token
- Target: Test the assistant at the end of the token
- Target: Test the assistant with the optional argument:
/back 3 - Target: Test the assistant with the entity selector:
/send-message @r - Target: Test the assistant with custom parser and non-zero-offset suggestions builder:
/fly others @a[distance=..8
[Test Case]
- Module: core
- Action: Test the command suggestion functionality.
- Target: Issue
/command-attachment attach-entity-one <uuid>command, it should suggest the looking at entity UUID. - Target: Issue
/command-attachment attach-entity-one @e[typecommand, it should be able toinsertthe suggestion content in the proper position. (non-zero-offset suggestions builder) - Target: Issue
/command-attachment attach-entity-one <uuid>command, it should be able toinsertthe suggestion content in the proper position. (zero-offset suggestions builder) - Target: Issue
/command-attachment attach-block-onecommand, it should filter out the duplicated suggestions. (client-side suggestions and server-side suggestions)
[Test Case]
- Module: core
- Action: Test the de-bounce for greedy command string arguments.
- Target: Issue:
/IF send-message %player:name% 1 THEN send-broadcast 22... - Target: Issue:
/IF send-message %player:name% 1 THEN send-broadcast 2 ELSE send-chat %player:name% 3
[Test Case]
- Module: core
- Action: Test the exception handler functions.
- Target: This mod failed at server startup, due to mixin injection errors.
- Target: This mod failed at server startup, due to module initialization failed.
- Target: This mod failed at the execution of
/fuji reloadcommand. - Target: This mod failed at the execution of
/json read a bcommand. - Target: This mod failed at the execution of
/run as console run as player %player:name% badcommand.
[Test Case]
- Module: core
- Action: Test the functionality of async chunk loading.
- Target: The RTP process should not block the game-playing. (Ticking entities, selecting target blocks...)
- Target: Throwing item entities during RTP process, the game should be ticked normally.
- Target: Start 3 RTP processes at the same time, it should be processed normally.
- Target: Run
/execute as @a run rtpcommand, it should be processed normally.
[Test Case]
- Module: core
- Action: Test the functionality of command override detection.
- Target: Create the new command
/home tp -> /say(with redirect) usingcommand_aliasmodule, you should see the override warning. - Target: Create the new command
/home tp -> /say(without redirect) usingcommand_bundlemodule, you should NOT see the override warning. - Target: Create the new command
/workbench -> /say(not nested) usingcommand_aliasmodule, you should see the override warning.
[Test Case]
- Module: core
- Action: Test the greedy command string argument suggestions builder. (With placeholders)
- Target: Issue:
/chain run as fake-op @s run as console say 1 chain say 2 - Target: Issue:
/chain run as fake-op %player:name% sa - Target: Issue:
/chain run as fake-op %player:name% run as console run as player @r say 1 chain say 2 - Target: Issue:
/run as player SakuraWald run as console run as fake-op %player:name% send-message @s I am %player:name%
[Test Case]
- Module: core
- Action: Test the greedy command string argument suggestions builder. (With separator literals)
- Target: Issue:
/chain say 1 chain - Target: Issue:
/chain say 1 chain say 2 chain - Target: Issue:
/chain say 1 chain say 2 chain say 3 - Target: Issue:
/chain say 1 chain chain chain sa - Target: Issue:
/chain say 3 chain send-messa - Target: Issue:
/chain say 3 chain send-message @s <rb>Hello - Target: Issue:
/chain IF say 1 THEN say 2 ELSE say 3 chain say 4 chain say 5
[Test Case]
- Module: core
- Action: Test the greedy command string argument suggestions builder. (Without separator literals)
- Target: Issue:
/run as console send-broadcast <rb>I am %player:name% - Target: Issue:
/run as player @s run as console run as fake-op %player:name% say I am %player:name% - Target: Issue:
/run as console command-attachment attach-entity-one @e[type=... - Target: Issue:
/NOT NOT NOT run as console delay 3 foreach when-online %player:name% send-broadcast You are %player:name%
[Test Case]
- Module: core
- Action: Test the parsers in Sign block and Anvil block.
- Target: The
color.signandcolor.anvilshould work in single-player world, when installed client-side.
[Test Case]
- Module: disabler.move_wrongly_disabler
- Action: Sit in a
boatand try to move it. - Target: The
vehicle moved wronglyshould be disabled.
[Test Case]
- Module: document
- Action: Test the generated document files.
- Target: Check the heading levels, ensure the TOC is generated properly.
- Target: Check the
newlineandindent. - Target: Check simple files:
afk.effect.md. - Target: Check the search function:
command_advice.md - Target: Check
ordered listandun-ordered list:rank.md,rtp.md - Target: Check the
indentfor amulti-line list item:core.md - Target: Check complex files:
command_bundle.md,command_meta.IF.md - Target: Check tags escaping:
predicate.md,placeholder.md
[Test Case]
- Module: echo.send_title
- Action: Issue the command
/send-title @s --mainTitle "<rainbow>Hello" --subTitle "<blue>World" --fadeInTicks 60 --stayTicks 60 --fadeOutTicks 60 - Target: Consecutive optional argument should work.
[Test Case]
- Module: fuji
- Action: Inspect the configurations of
command_menumodule. - Target: It should be able to inspect complex data structures.
[Test Case]
- Module: functional.enchantment
- Action: See if a pickaxe gets the max power level in
/enchantment - Target: See if the lambda of enchantment context is modified.
[Test Case]
- Module: head
- Action: Buy a new head in
/head. - Target: See if the structure of skin is changed by Mojang.
[Test Case]
- Module: kit
- Action: Create a new kit using
/kit editorcommand. - Target: See if the
kit editorworks.
[Test Case]
- Module: kit
- Action: Give the new kit using
/kit givecommand. - Target: See if the items is inserted in the proper slots. (Note that the player in creative mode can always pick up the same items even their inventory is full.)
[Test Case]
- Module: multiplier
- Action: Summon a fake player using
/player 1 spawnand throw exp bottle to it. - Target: Test the compatibility between
luckpermsandcarpet's fake player.
[Test Case]
- Module: nametag
- Action: Test the functionality of
nametagmodule. - Target: The nametag entity should be removed in the old dimension.
- Target: A new nametag entity should be created in the new dimension.
- Target: A new nametag entity should be created after the use of
nether portal - Target: A new nametag entity should be created after the use of
ender portal - Target: A new nametag entity should be created after the use of
/player Steve spawn - Target: The old nametag entity should be removed after the use of
/kill Steve - Target: A new nametag entity should be seen after mounting a
pigentity. - Target: A new nametag entity should be seen after dis-mounting a
pigentity.
[Test Case]
- Module: sit
- Action: Issue
/sitcommand while stepping on thebed block. - Target: The raycast height should be proper.
[Test Case]
- Module: skin
- Action: Try to send a chat message after the skin changed in online-mode server.
- Target: The chat message validation should be proper after a player changed its skin.
- Target: It should work in both
online-modeandoffline-modeservers.
[Test Case]
- Module: system_message
- Action: Test the functionality of this module.
- Target: The player joined text should be modified, with custom color.
- Target: The player left text sending should be cancelled
- Target: The chest title text should be modified
- Target: Issue
/gamerule showDeathMessagescommand, you should see the command feedback. - Target: Issue
/seedcommand, you should see the modified command feedback. - Target: Issue
/bancommand, you should see the modified ban screen. - Target: Fell from a high place, you should see the modified death message.
[Test Case]
- Module: view
- Action: Issue the
/view {inv/ender}command on a fake-player. - Target: You should be able to modify the slots on the fly.
[Test Case]
- Module: works
- Action: Create a new production work and start the sample.
- Target: See if the chunk iterator works.
- Target: See if the hopper mixin works.
[Test Case]
- Module: world
- Action: In MC 1.20.1, create a
overworlddimension type with seed12345. - Target: Goto
/tp @s 14665 ~ 345. (You should getemerald * 7,gold ingot * 3,iron ingot * 11,tnt * 2,heart of the sea * 1,cooked cod * 8andpotion of water breathing * 1.) - Target: Goto
/tp @s 0 128 0, you should inminecraft:ocean, and there is aminecraft:dark_forestin front of you, also there is alava sourceflowing down.
[Test Case]
- Module: world
- Action: Issue the
/save-allcommand without the installation offabric-apimod. - Target: The runtime dimensions should be saved.
[Test Case]
- Module: world
- Action: Test the chunk generator types and parameters
- Target: Issue
/world create flat minecraft:overworld --chunkGeneratorType FLAT - Target: Issue
/world create void minecraft:overworld --chunkGeneratorType FLAT --chunkGeneratorParameters "minecraft:air;minecraft:the_void"
[Test Case]
- Module: world
- Action: Test the extra dimension whose dimension type is
minecraft:the_end. - Target: Issue
/world create another_end minecraft:the_endto see if thedragon fightis initialized. - Target: Kill the dragon to see if the ender gate works.
[Test Case]
- Module: world.border
- Action: Issue
/tpand/world tpbetween dimensions. - Target: The per-dimension border should be synced on the client-side.