SHARE
TWEET

DoubleX RMMV Skill Hotkeys Unit Test v100a

Double_X Sep 8th, 2017 (edited) 61 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*============================================================================
  2.  *    ## Plugin Info                                                          
  3.  *----------------------------------------------------------------------------
  4.  *    # Plugin Name                                                          
  5.  *      DoubleX RMMV Skill Hotkeys Unit Test                                  
  6.  *----------------------------------------------------------------------------
  7.  *    # Introduction                                                          
  8.  *    1. This plugin performs some rudimetary invariants checking for the    
  9.  *       implementations of DoubleX RMMV Skill Hotkeys, and some elementary  
  10.  *       value validity checking for the parameters/configurations/notetags of
  11.  *       DoubleX RMMV Skill Hotkeys                                          
  12.  *    2. When a unit test failed, its error messages along with the stack    
  13.  *       trace leading to the failed test will be displayed as errors in the  
  14.  *       console                                                              
  15.  *----------------------------------------------------------------------------
  16.  *    # Terms Of Use                                                          
  17.  *      1. Commercial use's always allowed and crediting me's always optional.
  18.  *      2. You shall keep this plugin's Plugin Info part's contents intact.  
  19.  *      3. You shalln't claim that this plugin's written by anyone other than
  20.  *         DoubleX or my aliases. I always reserve the right to deny you from
  21.  *         using any of my plugins anymore if you've violated this.          
  22.  *      4. CC BY 4.0, except those conflicting with any of the above, applies
  23.  *         to this plugin, unless you've my permissions not needing follow so.
  24.  *      5. I always reserve the right to deny you from using this plugin      
  25.  *         anymore if you've violated any of the above.                      
  26.  *----------------------------------------------------------------------------
  27.  *    # Prerequisites                                                        
  28.  *      Plugins:                                                              
  29.  *      1. DoubleX RMMV Skill Hotkeys                                        
  30.  *      Abilities:                                                            
  31.  *      1. Nothing special for most ordinary cases                            
  32.  *      2. Little RMMV plugin development proficiency to fully utilize this  
  33.  *----------------------------------------------------------------------------
  34.  *    # Author Notes                                                          
  35.  *      1. Using this plugin might lead to noticeable performance penalties  
  36.  *----------------------------------------------------------------------------
  37.  *    # Links                                                                
  38.  *      DoubleX RMMV Skill Hotkeys:                                          
  39.  *      1. https://pastebin.com/iEfRMhf3                                      
  40.  *      This plugin:                                                          
  41.  *      1. https://pastebin.com/iHh5frL3                                      
  42.  *----------------------------------------------------------------------------
  43.  *    # Instructions                                                          
  44.  *      1. Place this plugin right below DoubleX RMMV Skill Hotkeys          
  45.  *      2. The default plugin file name is                                    
  46.  *         DoubleX RMMV Skill Hotkeys Unit Test v100a                        
  47.  *         If you want to change that, you must edit the value of            
  48.  *         DoubleX_RMMV.Skill_Hotkeys_Unit_Test_File, which must be done via  
  49.  *         opening this plugin js file directly                              
  50.  *----------------------------------------------------------------------------
  51.  *    # Author                                                                
  52.  *      DoubleX                                                              
  53.  *----------------------------------------------------------------------------
  54.  *    # Changelog                                                            
  55.  *      v1.00a(GMT 1000 8-9-2017):                                            
  56.  *      1. 1st version of this plugin finished                                
  57.  *============================================================================*/
  58. /*:
  59.  * @plugindesc Lets you run some unit tests for DoubleX RMMV Skill Hotkeys
  60.  * This plugin's entirely optional and is mainly for debuggers/developers    
  61.  * @author DoubleX
  62.  *
  63.  * @param isAlert
  64.  * @desc Sets whether the alert dialog will be shown when a unit test failed
  65.  * @default false
  66.  *
  67.  *============================================================================
  68.  */
  69.  
  70. var DoubleX_RMMV = DoubleX_RMMV || {};
  71. DoubleX_RMMV["Skill Hotkeys Unit Test"] = "v1.00a";
  72.  
  73. // The plugin file name must be the same as
  74. // DoubleX_RMMV.Skill_Hotkeys_Unit_Test_File
  75. DoubleX_RMMV.Skill_Hotkeys_Unit_Test_File =
  76.         "DoubleX RMMV Skill Hotkeys Unit Test v100a";
  77. //
  78.  
  79. /*============================================================================
  80.  *    ## Plugin Implementations                                              
  81.  *       You need not edit this part as it's about how this plugin works      
  82.  *----------------------------------------------------------------------------
  83.  *    # Plugin Support Info:                                                  
  84.  *      1. Prerequisites                                                      
  85.  *         - Basic knowledge on what unit tests do                            
  86.  *         - Some RMMV plugin development proficiency to fully comprehend this
  87.  *----------------------------------------------------------------------------*/
  88.  
  89. if (DoubleX_RMMV["Skill Hotkeys"]) {
  90.  
  91. /*----------------------------------------------------------------------------*/
  92.  
  93. /*----------------------------------------------------------------------------
  94.  *    # Edit class: Game_Actor                                                
  95.  *      - Uses all parameters/configurations/notetags to run plugin functions
  96.  *----------------------------------------------------------------------------*/
  97.  
  98. DoubleX_RMMV.Skill_Hotkeys_Unit_Test = {
  99.  
  100.     // Stores all the original parameter/configuration/notetag functions
  101.     orig: { params: {}, cfgs: {}, notes: {} },
  102.     //
  103.  
  104.     // Stores all the parameter/configuration/notetag function unit tests
  105.     unitTest: {
  106.  
  107.         // Stores all the parameter function unit tests
  108.         params: {
  109.  
  110.             /**
  111.              * Hotspot/No-op
  112.              * @author DoubleX
  113.              * @param {} result - The result returned by the original function
  114.              * @since v1.00a
  115.              * @version v1.00a
  116.              */
  117.             isEnabled: function(result) {
  118.                 // There's no need to test this parameter as it returns Boolean
  119.                 //
  120.             },
  121.  
  122.             /**
  123.              * Potential Hotspot/No-op
  124.              * @author DoubleX
  125.              * @param {} result - The result returned by the original function
  126.              * @since v1.00a
  127.              * @version v1.00a
  128.              */
  129.             bindNotePriority: function(result) {
  130.                 DoubleX_RMMV.Skill_Hotkeys_Unit_Test.checkFuncs.
  131.                         checkArrayString.call(this, result, "bindNotePriority");
  132.             }, // bindNotePriority
  133.  
  134.             /**
  135.              * Potential Hotspot/No-op
  136.              * @author DoubleX
  137.              * @param {} result - The result returned by the original function
  138.              * @since v1.00a
  139.              * @version v1.00a
  140.              */
  141.             useNotePriority: function(result) {
  142.                 DoubleX_RMMV.Skill_Hotkeys_Unit_Test.checkFuncs.
  143.                         checkArrayString.call(this, result, "useNotePriority");
  144.             }, // useNotePriority
  145.  
  146.             /**
  147.              * Potential Hotspot/No-op
  148.              * @author DoubleX
  149.              * @param {} result - The result returned by the original function
  150.              * @since v1.00a
  151.              * @version v1.00a
  152.              */
  153.             bindNoteChainingRule: function(result) {
  154.                 // There's no need to test this parameter as it's always valid
  155.                 //
  156.             }, // bindNoteChainingRule
  157.  
  158.             /**
  159.              * Potential Hotspot/No-op
  160.              * @author DoubleX
  161.              * @param {} result - The result returned by the original function
  162.              * @since v1.00a
  163.              * @version v1.00a
  164.              */
  165.             useNoteChainingRule: function(result) {
  166.                 // There's no need to test this parameter as it's always valid
  167.                 //
  168.             }, // useNoteChainingRule
  169.  
  170.             /**
  171.              * No-op
  172.              * @author DoubleX
  173.              * @param {} result - The result returned by the original function
  174.              * @since v1.00a
  175.              * @version v1.00a
  176.              */
  177.             bindHotkeyText: function(result) {
  178.                 DoubleX_RMMV.Skill_Hotkeys_Unit_Test.checkFuncs.
  179.                         checkString.call(this, result, "bindHotkeyText");
  180.             }, // bindHotkeyText
  181.  
  182.             /**
  183.              * No-op
  184.              * @author DoubleX
  185.              * @param {} result - The result returned by the original function
  186.              * @since v1.00a
  187.              * @version v1.00a
  188.              */
  189.             useSkillText: function(result) {
  190.                 DoubleX_RMMV.Skill_Hotkeys_Unit_Test.checkFuncs.
  191.                         checkString.call(this, result, "useSkillText");
  192.             }, // useSkillText
  193.  
  194.             /**
  195.              * Hotspot/No-op
  196.              * @author DoubleX
  197.              * @param {} result - The result returned by the original function
  198.              * @since v1.00a
  199.              * @version v1.00a
  200.              */
  201.             unusableSkillCoverIconPath: function(result) {
  202.                 DoubleX_RMMV.Skill_Hotkeys_Unit_Test.checkFuncs.
  203.                         checkAtLeastString.call(
  204.                         this, result, "unusableSkillCoverIconPath");
  205.            }, // unusableSkillCoverIconPath
  206.  
  207.             /**
  208.              * Hotspot/No-op
  209.              * @author DoubleX
  210.              * @param {} result - The result returned by the original function
  211.              * @since v1.00a
  212.              * @version v1.00a
  213.              */
  214.             unusableSkillCoverIconName: function(result) {
  215.                 DoubleX_RMMV.Skill_Hotkeys_Unit_Test.checkFuncs.
  216.                         checkAtLeastString.call(
  217.                         this, result, "unusableSkillCoverIconName");
  218.             }, // unusableSkillCoverIconName
  219.  
  220.             /**
  221.              * Hotspot/No-op
  222.              * @author DoubleX
  223.              * @param {} result - The result returned by the original function
  224.              * @since v1.00a
  225.              * @version v1.00a
  226.              */
  227.             unusableSkillCoverIconHue: function(result) {
  228.                 var msg = "DoubleX_RMMV.Skill_Hotkeys_Unit_Test.unitTest.params.unusableSkillCoverIconHue\nresult: " + result;
  229.                 var isFailed = false;
  230.                 if (isNaN(result)) {
  231.                     isFailed = true;
  232.                     msg += "\nFailed! unusableSkillCoverIconHue should return a Number!";
  233.                 } else if (result < -360 || result > 360) {
  234.                     isFailed = true;
  235.                     msg += "\nFailed! unusableSkillCoverIconHue should return a Number ranging from -360 to 360!";
  236.                 }
  237.                 if (!isFailed) return;
  238.                 console.error(msg);
  239.                 DoubleX_RMMV.Skill_Hotkeys_Unit_Test.printFailedTestStackTrace.
  240.                         call(this);
  241.             }, // unusableSkillCoverIconName
  242.  
  243.             /**
  244.              * Hotspot/No-op
  245.              * @author DoubleX
  246.              * @param {} result - The result returned by the original function
  247.              * @since v1.00a
  248.              * @version v1.00a
  249.              */
  250.             unusableSkillCoverIconSmooth: function(result) {
  251.                 // There's no need to test this parameter as it's always valid
  252.                 //
  253.             }, // unusableSkillCoverIconSmooth
  254.  
  255.             /**
  256.              * Hotspot/No-op
  257.              * @author DoubleX
  258.              * @param {} result - The result returned by the original function
  259.              * @since v1.00a
  260.              * @version v1.00a
  261.              */
  262.             hotkeyCmdWindowW: function(result) {
  263.                 DoubleX_RMMV.Skill_Hotkeys_Unit_Test.checkFuncs.
  264.                         checkPositiveNum.call(this, result, "hotkeyCmdWindowW");
  265.             }, // hotkeyCmdWindowW
  266.  
  267.             /**
  268.              * Hotspot/No-op
  269.              * @author DoubleX
  270.              * @param {} result - The result returned by the original function
  271.              * @since v1.00a
  272.              * @version v1.00a
  273.              */
  274.             hotkeyCmdWindowH: function(result) {
  275.                 DoubleX_RMMV.Skill_Hotkeys_Unit_Test.checkFuncs.
  276.                         checkPositiveNum.call(this, result, "hotkeyCmdWindowH");
  277.             }, // hotkeyCmdWindowH
  278.  
  279.             /**
  280.              * Hotspot/No-op
  281.              * @author DoubleX
  282.              * @param {} result - The result returned by the original function
  283.              * @since v1.00a
  284.              * @version v1.00a
  285.              */
  286.             hotkeyCmdWindowX: function(result) {
  287.                 DoubleX_RMMV.Skill_Hotkeys_Unit_Test.checkFuncs.
  288.                         checkNonNegativeNum.call(
  289.                         this, result, "hotkeyCmdWindowX");
  290.             }, // hotkeyCmdWindowX
  291.  
  292.             /**
  293.              * Hotspot/No-op
  294.              * @author DoubleX
  295.              * @param {} result - The result returned by the original function
  296.              * @since v1.00a
  297.              * @version v1.00a
  298.              */
  299.             hotkeyCmdWindowY: function(result) {
  300.                 DoubleX_RMMV.Skill_Hotkeys_Unit_Test.checkFuncs.
  301.                         checkNonNegativeNum.call(
  302.                         this, result, "hotkeyCmdWindowY");
  303.             }, // hotkeyCmdWindowY
  304.  
  305.             /**
  306.              * Hotspot/No-op
  307.              * @author DoubleX
  308.              * @param {} result - The result returned by the original function
  309.              * @since v1.00a
  310.              * @version v1.00a
  311.              */
  312.             hotkeyCmdLineH: function(result) {
  313.                 DoubleX_RMMV.Skill_Hotkeys_Unit_Test.checkFuncs.
  314.                         checkPositiveNum.call(this, result, "hotkeyCmdLineH");
  315.             }, // hotkeyCmdLineH
  316.  
  317.             /**
  318.              * Hotspot/No-op
  319.              * @author DoubleX
  320.              * @param {} result - The result returned by the original function
  321.              * @since v1.00a
  322.              * @version v1.00a
  323.              */
  324.             hotkeyCmdFontSize: function(result) {
  325.                 DoubleX_RMMV.Skill_Hotkeys_Unit_Test.checkFuncs.
  326.                         checkPositiveNum.call(
  327.                         this, result, "hotkeyCmdFontSize");
  328.             }, // hotkeyCmdFontSize
  329.  
  330.             /**
  331.              * Hotspot/No-op
  332.              * @author DoubleX
  333.              * @param {} result - The result returned by the original function
  334.              * @since v1.00a
  335.              * @version v1.00a
  336.              */
  337.             hotkeyCmdPadding: function(result) {
  338.                 DoubleX_RMMV.Skill_Hotkeys_Unit_Test.checkFuncs.
  339.                         checkNonNegativeNum.call(
  340.                         this, result, "hotkeyCmdPadding");
  341.             }, // hotkeyCmdPadding
  342.  
  343.             /**
  344.              * Hotspot/No-op
  345.              * @author DoubleX
  346.              * @param {} result - The result returned by the original function
  347.              * @since v1.00a
  348.              * @version v1.00a
  349.              */
  350.             hotkeyCmdTextPadding: function(result) {
  351.                 DoubleX_RMMV.Skill_Hotkeys_Unit_Test.checkFuncs.
  352.                         checkNonNegativeNum.call(
  353.                         this, result, "hotkeyCmdTextPadding");
  354.             }, // hotkeyCmdTextPadding
  355.  
  356.             /**
  357.              * Hotspot/No-op
  358.              * @author DoubleX
  359.              * @param {} result - The result returned by the original function
  360.              * @since v1.00a
  361.              * @version v1.00a
  362.              */
  363.             hotkeyCmdBackOpacity: function(result) {
  364.                 DoubleX_RMMV.Skill_Hotkeys_Unit_Test.checkFuncs.
  365.                         checkOpacityNum.call(
  366.                         this, result, "hotkeyCmdBackOpacity");
  367.             }, // hotkeyCmdBackOpacity
  368.  
  369.             /**
  370.              * Hotspot/No-op
  371.              * @author DoubleX
  372.              * @param {} result - The result returned by the original function
  373.              * @since v1.00a
  374.              * @version v1.00a
  375.              */
  376.             hotkeyCmdTranslucentOpacity: function(result) {
  377.                 DoubleX_RMMV.Skill_Hotkeys_Unit_Test.checkFuncs.
  378.                         checkOpacityNum.call(
  379.                         this, result, "hotkeyCmdTranslucentOpacity");
  380.             }, // hotkeyCmdTranslucentOpacity
  381.  
  382.             /**
  383.              * Hotspot/No-op
  384.              * @author DoubleX
  385.              * @param {} result - The result returned by the original function
  386.              * @since v1.00a
  387.              * @version v1.00a
  388.              */
  389.             hotkeyCmdSpacing: function(result) {
  390.                 DoubleX_RMMV.Skill_Hotkeys_Unit_Test.checkFuncs.
  391.                         checkNonNegativeNum.call(
  392.                         this, result, "hotkeyCmdSpacing");
  393.             }, // hotkeyCmdSpacing
  394.  
  395.             /**
  396.              * Hotspot/No-op
  397.              * @author DoubleX
  398.              * @param {} result - The result returned by the original function
  399.              * @since v1.00a
  400.              * @version v1.00a
  401.              */
  402.             hotkeyListWindowW: function(result) {
  403.                 DoubleX_RMMV.Skill_Hotkeys_Unit_Test.checkFuncs.
  404.                         checkPositiveNum.call(
  405.                         this, result, "hotkeyListWindowW");
  406.             }, // hotkeyListWindowW
  407.  
  408.             /**
  409.              * Hotspot/No-op
  410.              * @author DoubleX
  411.              * @param {} result - The result returned by the original function
  412.              * @since v1.00a
  413.              * @version v1.00a
  414.              */
  415.             hotkeyListWindowH: function(result) {
  416.                 DoubleX_RMMV.Skill_Hotkeys_Unit_Test.checkFuncs.
  417.                         checkPositiveNum.call(
  418.                         this, result, "hotkeyListWindowH");
  419.             }, // hotkeyListWindowH
  420.  
  421.             /**
  422.              * Hotspot/No-op
  423.              * @author DoubleX
  424.              * @param {} result - The result returned by the original function
  425.              * @since v1.00a
  426.              * @version v1.00a
  427.              */
  428.             hotkeyListWindowX: function(result) {
  429.                 DoubleX_RMMV.Skill_Hotkeys_Unit_Test.checkFuncs.
  430.                         checkNonNegativeNum.call(
  431.                         this, result, "hotkeyListWindowX");
  432.             }, // hotkeyListWindowX
  433.  
  434.             /**
  435.              * Hotspot/No-op
  436.              * @author DoubleX
  437.              * @param {} result - The result returned by the original function
  438.              * @since v1.00a
  439.              * @version v1.00a
  440.              */
  441.             hotkeyListWindowY: function(result) {
  442.                 DoubleX_RMMV.Skill_Hotkeys_Unit_Test.checkFuncs.
  443.                         checkNonNegativeNum.call(
  444.                         this, result, "hotkeyListWindowY");
  445.             }, // hotkeyListWindowY
  446.  
  447.             /**
  448.              * Hotspot/No-op
  449.              * @author DoubleX
  450.              * @param {} result - The result returned by the original function
  451.              * @since v1.00a
  452.              * @version v1.00a
  453.              */
  454.             hotkeyListLineH: function(result) {
  455.                 DoubleX_RMMV.Skill_Hotkeys_Unit_Test.checkFuncs.
  456.                         checkPositiveNum.call(this, result, "hotkeyListLineH");
  457.             }, // hotkeyListLineH
  458.  
  459.             /**
  460.              * Hotspot/No-op
  461.              * @author DoubleX
  462.              * @param {} result - The result returned by the original function
  463.              * @since v1.00a
  464.              * @version v1.00a
  465.              */
  466.             hotkeyListFontSize: function(result) {
  467.                 DoubleX_RMMV.Skill_Hotkeys_Unit_Test.checkFuncs.
  468.                         checkPositiveNum.call(
  469.                         this, result, "hotkeyListFontSize");
  470.             }, // hotkeyListFontSize
  471.  
  472.             /**
  473.              * Hotspot/No-op
  474.              * @author DoubleX
  475.              * @param {} result - The result returned by the original function
  476.              * @since v1.00a
  477.              * @version v1.00a
  478.              */
  479.             hotkeyListPadding: function(result) {
  480.                 DoubleX_RMMV.Skill_Hotkeys_Unit_Test.checkFuncs.
  481.                         checkNonNegativeNum.call(
  482.                         this, result, "hotkeyListPadding");
  483.             }, // hotkeyListPadding
  484.  
  485.             /**
  486.              * Hotspot/No-op
  487.              * @author DoubleX
  488.              * @param {} result - The result returned by the original function
  489.              * @since v1.00a
  490.              * @version v1.00a
  491.              */
  492.             hotkeyListTextPadding: function(result) {
  493.                 DoubleX_RMMV.Skill_Hotkeys_Unit_Test.checkFuncs.
  494.                         checkNonNegativeNum.call(
  495.                         this, result, "hotkeyListTextPadding");
  496.             }, // hotkeyListTextPadding
  497.  
  498.             /**
  499.              * Hotspot/No-op
  500.              * @author DoubleX
  501.              * @param {} result - The result returned by the original function
  502.              * @since v1.00a
  503.              * @version v1.00a
  504.              */
  505.             hotkeyListBackOpacity: function(result) {
  506.                 DoubleX_RMMV.Skill_Hotkeys_Unit_Test.checkFuncs.
  507.                         checkOpacityNum.call(
  508.                         this, result, "hotkeyListBackOpacity");
  509.             }, // hotkeyListBackOpacity
  510.  
  511.             /**
  512.              * Hotspot/No-op
  513.              * @author DoubleX
  514.              * @param {} result - The result returned by the original function
  515.              * @since v1.00a
  516.              * @version v1.00a
  517.              */
  518.             hotkeyListTranslucentOpacity: function(result) {
  519.                 DoubleX_RMMV.Skill_Hotkeys_Unit_Test.checkFuncs.
  520.                         checkOpacityNum.call(
  521.                         this, result, "hotkeyListTranslucentOpacity");
  522.             }, // hotkeyListTranslucentOpacity
  523.  
  524.             /**
  525.              * Hotspot/No-op
  526.              * @author DoubleX
  527.              * @param {} result - The result returned by the original function
  528.              * @since v1.00a
  529.              * @version v1.00a
  530.              */
  531.             hotkeyListSpacing: function(result) {
  532.                 DoubleX_RMMV.Skill_Hotkeys_Unit_Test.checkFuncs.
  533.                         checkNonNegativeNum.call(
  534.                         this, result, "hotkeyListSpacing");
  535.             }, // hotkeyListSpacing
  536.  
  537.             /**
  538.              * Hotspot/No-op
  539.              * @author DoubleX
  540.              * @param {} result - The result returned by the original function
  541.              * @since v1.00a
  542.              * @version v1.00a
  543.              */
  544.             hotkeyCmdListWindowW: function(result) {
  545.                 DoubleX_RMMV.Skill_Hotkeys_Unit_Test.checkFuncs.
  546.                         checkPositiveNum.call(
  547.                         this, result, "hotkeyCmdListWindowW");
  548.             }, // hotkeyCmdListWindowW
  549.  
  550.             /**
  551.              * Hotspot/No-op
  552.              * @author DoubleX
  553.              * @param {} result - The result returned by the original function
  554.              * @since v1.00a
  555.              * @version v1.00a
  556.              */
  557.             hotkeyCmdListWindowH: function(result) {
  558.                 DoubleX_RMMV.Skill_Hotkeys_Unit_Test.checkFuncs.
  559.                         checkPositiveNum.call(
  560.                         this, result, "hotkeyCmdListWindowH");
  561.             }, // hotkeyCmdListWindowH
  562.  
  563.             /**
  564.              * Hotspot/No-op
  565.              * @author DoubleX
  566.              * @param {} result - The result returned by the original function
  567.              * @since v1.00a
  568.              * @version v1.00a
  569.              */
  570.             hotkeyCmdListWindowX: function(result) {
  571.                 DoubleX_RMMV.Skill_Hotkeys_Unit_Test.checkFuncs.
  572.                         checkNonNegativeNum.call(
  573.                         this, result, "hotkeyCmdListWindowX");
  574.             }, // hotkeyCmdListWindowX
  575.  
  576.             /**
  577.              * Hotspot/No-op
  578.              * @author DoubleX
  579.              * @param {} result - The result returned by the original function
  580.              * @since v1.00a
  581.              * @version v1.00a
  582.              */
  583.             hotkeyCmdListWindowY: function(result) {
  584.                 DoubleX_RMMV.Skill_Hotkeys_Unit_Test.checkFuncs.
  585.                         checkNonNegativeNum.call(
  586.                         this, result, "hotkeyCmdListWindowY");
  587.             }, // hotkeyCmdListWindowY
  588.  
  589.             /**
  590.              * Hotspot/No-op
  591.              * @author DoubleX
  592.              * @param {} result - The result returned by the original function
  593.              * @since v1.00a
  594.              * @version v1.00a
  595.              */
  596.             hotkeyCmdListLineH: function(result) {
  597.                 DoubleX_RMMV.Skill_Hotkeys_Unit_Test.checkFuncs.
  598.                         checkPositiveNum.call(
  599.                         this, result, "hotkeyCmdListLineH");
  600.             }, // hotkeyCmdListLineH
  601.  
  602.             /**
  603.              * Hotspot/No-op
  604.              * @author DoubleX
  605.              * @param {} result - The result returned by the original function
  606.              * @since v1.00a
  607.              * @version v1.00a
  608.              */
  609.             hotkeyCmdListFontSize: function(result) {
  610.                 DoubleX_RMMV.Skill_Hotkeys_Unit_Test.checkFuncs.
  611.                         checkPositiveNum.call(
  612.                         this, result, "hotkeyCmdListFontSize");
  613.             }, // hotkeyCmdListFontSize
  614.  
  615.             /**
  616.              * Hotspot/No-op
  617.              * @author DoubleX
  618.              * @param {} result - The result returned by the original function
  619.              * @since v1.00a
  620.              * @version v1.00a
  621.              */
  622.             hotkeyCmdListPadding: function(result) {
  623.                 DoubleX_RMMV.Skill_Hotkeys_Unit_Test.checkFuncs.
  624.                         checkNonNegativeNum.call(
  625.                         this, result, "hotkeyCmdListPadding");
  626.             }, // hotkeyCmdListPadding
  627.  
  628.             /**
  629.              * Hotspot/No-op
  630.              * @author DoubleX
  631.              * @param {} result - The result returned by the original function
  632.              * @since v1.00a
  633.              * @version v1.00a
  634.              */
  635.             hotkeyCmdListTextPadding: function(result) {
  636.                 DoubleX_RMMV.Skill_Hotkeys_Unit_Test.checkFuncs.
  637.                         checkNonNegativeNum.call(
  638.                         this, result, "hotkeyCmdListTextPadding");
  639.             }, // hotkeyCmdListTextPadding
  640.  
  641.             /**
  642.              * Hotspot/No-op
  643.              * @author DoubleX
  644.              * @param {} result - The result returned by the original function
  645.              * @since v1.00a
  646.              * @version v1.00a
  647.              */
  648.             hotkeyCmdListBackOpacity: function(result) {
  649.                 DoubleX_RMMV.Skill_Hotkeys_Unit_Test.checkFuncs.
  650.                         checkOpacityNum.call(
  651.                         this, result, "hotkeyCmdListBackOpacity");
  652.             }, // hotkeyCmdListBackOpacity
  653.  
  654.             /**
  655.              * Hotspot/No-op
  656.              * @author DoubleX
  657.              * @param {} result - The result returned by the original function
  658.              * @since v1.00a
  659.              * @version v1.00a
  660.              */
  661.             hotkeyCmdListTranslucentOpacity: function(result) {
  662.                 DoubleX_RMMV.Skill_Hotkeys_Unit_Test.checkFuncs.
  663.                         checkOpacityNum.call(
  664.                         this, result, "hotkeyCmdListTranslucentOpacity");
  665.             }, // hotkeyCmdListTranslucentOpacity
  666.  
  667.             /**
  668.              * Hotspot/No-op
  669.              * @author DoubleX
  670.              * @param {} result - The result returned by the original function
  671.              * @since v1.00a
  672.              * @version v1.00a
  673.              */
  674.             hotkeyCmdListSpacing: function(result) {
  675.                 DoubleX_RMMV.Skill_Hotkeys_Unit_Test.checkFuncs.
  676.                         checkNonNegativeNum.call(
  677.                         this, result, "hotkeyCmdListSpacing");
  678.             } // hotkeyCmdListSpacing
  679.  
  680.         }, // params
  681.         //
  682.  
  683.         // Stores all the configuration function unit tests
  684.         cfgs: {
  685.  
  686.             /**
  687.              * Potential Hotspot/No-op
  688.              * @author DoubleX
  689.              * @param {} result - The result returned by the original function
  690.              * @since v1.00a
  691.              * @version v1.00a
  692.              */
  693.             hotkeyNames: function(result) {
  694.                 var msg = "DoubleX_RMMV.Skill_Hotkeys_Unit_Test.unitTest.params.hotkeyNames";
  695.                 msg += "\nresult: " + result;
  696.                 var isFailed = false;
  697.                 if (result !== Object(result)) {
  698.                     isFailed = true;
  699.                     msg += "\nFailed! hotkeyNames should return an Object!";
  700.                 } else {
  701.                     var hotkeys = Object.keys(result), length = hotkeys.length;
  702.                     for (var index = 0; index < length; index++) {
  703.                         var val = result[hotkeys[index]];
  704.                         if (typeof val === 'string' || val instanceof String) {
  705.                             continue;
  706.                         }
  707.                         isFailed = true;
  708.                         msg += "\nFailed! The name " + val +
  709.                                 " whose key having index " + index +
  710.                                 " should be a String!";
  711.                     }
  712.                 }
  713.                 if (!isFailed) return;
  714.                 console.error(msg);
  715.                 DoubleX_RMMV.Skill_Hotkeys_Unit_Test.printFailedTestStackTrace.
  716.                         call(this);
  717.             } // hotkeyNames
  718.  
  719.         }, // cfgs
  720.         //
  721.  
  722.         notes: {} // Stores all the notetag function unit tests
  723.  
  724.     }, // unitTest
  725.     //
  726.  
  727.     checkFuncs: {
  728.  
  729.         /**
  730.          * Hotspot/No-op
  731.          * @author DoubleX
  732.          * @param {} result - The result returned by the original function
  733.          * @param {String} funcName - The name of the original function
  734.          * @since v1.00a
  735.          * @version v1.00a
  736.          */
  737.         checkArrayString: function(result, funcName) {
  738.             var msg = "DoubleX_RMMV.Skill_Hotkeys_Unit_Test.unitTest.params." +
  739.                     funcName + "\nresult: " + result;
  740.             var isFailed = false;
  741.             if (!Array.isArray(result)) {
  742.                 isFailed = true;
  743.                 msg += "\nFailed! " + funcName + " should return an Array!";
  744.             } else {
  745.                 var length = result.length;
  746.                 var validVals = [
  747.                     "states",
  748.                     "armors",
  749.                     "weapons",
  750.                     "classes",
  751.                     "actors"
  752.                 ];
  753.                 msg += "\nvalidVals: " + validVals;
  754.                 for (var index = 0; index < length; index++) {
  755.                     var val = result[index];
  756.                     if (validVals.indexOf(val) >= 0) continue;
  757.                     isFailed = true;
  758.                     msg += "\nFailed! The element " + val + " having index " +
  759.                             index + " should be within validVals!";
  760.                 }
  761.             }
  762.             if (!isFailed) return;
  763.             console.error(msg);
  764.             DoubleX_RMMV.Skill_Hotkeys_Unit_Test.printFailedTestStackTrace.call(
  765.                     this);
  766.         }, // checkArrayString
  767.  
  768.         /**
  769.          * Hotspot/No-op
  770.          * @author DoubleX
  771.          * @param {} result - The result returned by the original function
  772.          * @param {String} funcName - The name of the original function
  773.          * @since v1.00a
  774.          * @version v1.00a
  775.          */
  776.         checkString: function(result, funcName) {
  777.             var msg = "DoubleX_RMMV.Skill_Hotkeys_Unit_Test.unitTest.params." +
  778.                     funcName + "\nresult: " + result;
  779.             if (typeof result === 'string' || result instanceof String) return;
  780.             msg += "\nFailed! " + funcName + " should return a String!";
  781.             console.error(msg);
  782.             DoubleX_RMMV.Skill_Hotkeys_Unit_Test.printFailedTestStackTrace.call(
  783.                     this);
  784.         }, // checkString
  785.  
  786.         /**
  787.          * Hotspot/No-op
  788.          * @author DoubleX
  789.          * @param {} result - The result returned by the original function
  790.          * @param {String} funcName - The name of the original function
  791.          * @since v1.00a
  792.          * @version v1.00a
  793.          */
  794.         checkAtLeastString: function(result, funcName) {
  795.             var msg = "DoubleX_RMMV.Skill_Hotkeys_Unit_Test.unitTest.params." +
  796.                     funcName + "\nresult: " + result;
  797.             if (typeof result === 'string' || result instanceof String) return;
  798.             msg += "\nFailed! " + funcName +
  799.                     " should at least return a String!";
  800.             console.error(msg);
  801.             DoubleX_RMMV.Skill_Hotkeys_Unit_Test.printFailedTestStackTrace.call(
  802.                     this);
  803.         }, // checkAtLeastString
  804.  
  805.         /**
  806.          * Hotspot/No-op
  807.          * @author DoubleX
  808.          * @param {} result - The result returned by the original function
  809.          * @param {String} funcName - The name of the original function
  810.          * @since v1.00a
  811.          * @version v1.00a
  812.          */
  813.         checkPositiveNum: function(result, funcName) {
  814.             var msg = "DoubleX_RMMV.Skill_Hotkeys_Unit_Test.unitTest.params." +
  815.                     funcName + "\nresult: " + result;
  816.             var isFailed = false;
  817.             if (isNaN(result)) {
  818.                 isFailed = true;
  819.                 msg += "\nFailed! " + funcName + " should return a Number!";
  820.             } else if (result <= 0) {
  821.                 isFailed = true;
  822.                 msg += "\nFailed! " + funcName +
  823.                         " should return a positive Number!";
  824.             }
  825.             if (!isFailed) return;
  826.             console.error(msg);
  827.             DoubleX_RMMV.Skill_Hotkeys_Unit_Test.printFailedTestStackTrace.call(
  828.                     this);
  829.         }, // checkPositiveNum
  830.  
  831.         /**
  832.          * Hotspot/No-op
  833.          * @author DoubleX
  834.          * @param {} result - The result returned by the original function
  835.          * @param {String} funcName - The name of the original function
  836.          * @since v1.00a
  837.          * @version v1.00a
  838.          */
  839.         checkNonNegativeNum: function(result, funcName) {
  840.             var msg = "DoubleX_RMMV.Skill_Hotkeys_Unit_Test.unitTest.params." +
  841.                     funcName + "\nresult: " + result;
  842.             var isFailed = false;
  843.             if (isNaN(result)) {
  844.                 isFailed = true;
  845.                 msg += "\nFailed! " + funcName + " should return a Number!";
  846.             } else if (result < 0) {
  847.                 isFailed = true;
  848.                 msg += "\nFailed! " + funcName +
  849.                         " should return a nonnegative Number!";
  850.             }
  851.             if (!isFailed) return;
  852.             console.error(msg);
  853.             DoubleX_RMMV.Skill_Hotkeys_Unit_Test.printFailedTestStackTrace.call(
  854.                     this);
  855.         }, // checkNonNegativeNum
  856.  
  857.         /**
  858.          * Hotspot/No-op
  859.          * @author DoubleX
  860.          * @param {} result - The result returned by the original function
  861.          * @param {String} funcName - The name of the original function
  862.          * @since v1.00a
  863.          * @version v1.00a
  864.          */
  865.         checkOpacityNum: function(result, funcName) {
  866.             var msg = "DoubleX_RMMV.Skill_Hotkeys_Unit_Test.unitTest.params." +
  867.                     funcName + "\nresult: " + result;
  868.             var isFailed = false;
  869.             if (isNaN(result)) {
  870.                 isFailed = true;
  871.                 msg += "\nFailed! " + funcName + " should return a Number!";
  872.             } else if (result < 0 || result > 255) {
  873.                     isFailed = true;
  874.                     msg += "\nFailed! " + funcName +
  875.                             " should return a Number ranging from 0 to 255!";
  876.                 }
  877.             if (!isFailed) return;
  878.             console.error(msg);
  879.             DoubleX_RMMV.Skill_Hotkeys_Unit_Test.printFailedTestStackTrace.call(
  880.                     this);
  881.         } // checkOpacityNum
  882.  
  883.     }, // checkFuncs
  884.  
  885.     /**
  886.      * Pure function
  887.      * @author DoubleX
  888.      * @param {String} type - The parameter/configuration/notetag indicator
  889.      * @param {String} name - The parameter/configuration/notetag name
  890.      * @returns {Function(Number/Nullable, Object/Nullable)} The function with
  891.      *                                                      unit tests
  892.      * @since v1.00a
  893.      * @version v1.00a
  894.      */
  895.     unitTestFunc: function(type, name) {
  896.         /**
  897.          * Nullipotent
  898.          * @author DoubleX
  899.          * @returns {} The requested result
  900.          * @since v1.00a
  901.          * @version v1.00a
  902.          */
  903.         return function() { // v1.00a - v1.00a; Extended
  904.             var SHUT = DoubleX_RMMV.Skill_Hotkeys_Unit_Test;
  905.             var result = SHUT.orig[type][name].apply(this, arguments);
  906.             // Added to test the parameter/configuration/notetag value validity
  907.             SHUT.unitTest[type][name].call(this, result);
  908.             return result;
  909.             //
  910.         };
  911.     }, // unitTestFunc
  912.  
  913.     /**
  914.      * No-op
  915.      * @author DoubleX
  916.      * @since v1.00a
  917.      * @version v1.00a
  918.      */
  919.     printFailedTestStackTrace: function() {
  920.         // Deliberately make an error that's catched to get the stack trace
  921.         try {
  922.             x;
  923.         } catch (err) {
  924.             console.error("The stacktrace leading to this failed test:");
  925.             console.error(err);
  926.             if (DoubleX_RMMV.Skill_Hotkeys_Unit_Test.isAlert.call(this)) {
  927.                 alert("A unit test in DoubleX RMMV Skill Hotkeys has failed. Please check the console for details.");
  928.             }
  929.         }
  930.         //
  931.     }, // printFailedTestStackTrace
  932.  
  933.     /**
  934.      * Nullipotent
  935.      * @author DoubleX
  936.      * @returns {Boolean} The check result
  937.      * @since v1.00a
  938.      * @version v1.00a
  939.      */
  940.     isAlert: function() {
  941.         return PluginManager.parameters(DoubleX_RMMV.Skill_Hotkeys_File).
  942.                 isAlert === "true";
  943.     } // isAlert
  944.  
  945. }; // DoubleX_RMMV.Skill_Hotkeys_Unit_Test
  946.  
  947. (function(SH, SHUT) {
  948.  
  949.     "use strict";
  950.  
  951.     // There's no need to test this parameter as it's always valid
  952.     var notes = SHUT.unitTest.notes, checkFunc = new Function("result", "");
  953.     //
  954.     Object.keys(SH.notes).forEach(function(note) { notes[note] = checkFunc; });
  955.  
  956. })(DoubleX_RMMV.Skill_Hotkeys, DoubleX_RMMV.Skill_Hotkeys_Unit_Test);
  957.  
  958. /*----------------------------------------------------------------------------
  959.  *    # Edit class: DataManager                                              
  960.  *      - Extends all parameter/configuration/notetag functions upon load game
  961.  *----------------------------------------------------------------------------*/
  962.  
  963. (function(SH, SHUT) {
  964.  
  965.     "use strict";
  966.  
  967.     SH.DataManager.unitTest = { orig: {}, new: {} };
  968.     var _SH = SH.DataManager.new;
  969.     var _DM = SH.DataManager.unitTest.orig, _UT = SH.DataManager.unitTest.new;
  970.  
  971.     /**
  972.      * The this pointer is DataManager
  973.      * Idempotent
  974.      * @author DoubleX
  975.      * @param {String} funcType - The parameter/configuration/notetag label
  976.      * @param {String} content - The name of the stored function content
  977.      * @since v1.00a
  978.      * @version v1.00a
  979.      */
  980.     _DM._extractFuncContent = _SH._extractFuncContent;
  981.     _SH._extractFuncContent = function(funcType, content) {
  982.     // v1.00a - v1.00a; Extended
  983.         _DM._extractFuncContent.apply(this, arguments);
  984.         // Added to unit test the value validity of param/cfg/note functions
  985.         _UT._extractFuncContent.call(this, funcType, content);
  986.         //
  987.     }; // _SH._extractFuncContent
  988.  
  989.     /**
  990.      * The this pointer is DataManager
  991.      * @author DoubleX
  992.      * @param {String} funcType - The parameter/configuration/notetag label
  993.      * @param {String} content - The name of the stored function content
  994.      * @since v1.00a
  995.      * @version v1.00a
  996.      */
  997.     _UT._extractFuncContent = function(funcType, content) {
  998.         SHUT.orig[funcType][content] = SH[funcType][content];
  999.         SH[funcType][content] = SHUT.unitTestFunc.call(this, funcType, content);
  1000.     }; // _UT._extractFuncContent
  1001.  
  1002. })(DoubleX_RMMV.Skill_Hotkeys, DoubleX_RMMV.Skill_Hotkeys_Unit_Test);
  1003.  
  1004. /*----------------------------------------------------------------------------
  1005.  *    # Edit class: Game_System                                              
  1006.  *      - Extends all parameter/configuration/notetag functions upon load game
  1007.  *----------------------------------------------------------------------------*/
  1008.  
  1009. (function(SH, SHUT) {
  1010.  
  1011.     "use strict";
  1012.  
  1013.     SH.Game_System.unitTest = { orig: {}, new: {} };
  1014.     var _SH = SH.Game_System.new;
  1015.     var _GS = SH.Game_System.unitTest.orig, _UT = SH.Game_System.unitTest.new;
  1016.  
  1017.     /**
  1018.      * The this pointer is Game_System.prototype
  1019.      * Idempotent
  1020.      * @author DoubleX
  1021.      * @param {Object[String, String]} params - The params/cfgs name-value map
  1022.      * @param {String} param - The name of the parameter/configuration
  1023.      * @since v1.00a
  1024.      * @version v1.00a
  1025.      */
  1026.     _GS._storeParam = _SH._storeParam;
  1027.     _SH._storeParam = function(params, param) { // v1.00a - v1.00a; Extended
  1028.         // Added to prevent storing the extended parameter function contents
  1029.         if (SHUT.orig.params[param]) return;
  1030.         //
  1031.         _GS._storeParam.apply(this, arguments);
  1032.         // Added to unit test the value validity of all parameter functions
  1033.         _UT._storeParam.call(this, param);
  1034.         //
  1035.     }; // _SH._storeParam
  1036.  
  1037.     /**
  1038.      * The this pointer is Game_System.prototype
  1039.      * Idempotent
  1040.      * @author DoubleX
  1041.      * @param {String} cfgType - The configuration type label
  1042.      * @param {String} cfg - The name of the configuration
  1043.      * @since v1.00a
  1044.      * @version v1.00a
  1045.      */
  1046.     _GS._storeCfg = _SH._storeCfg;
  1047.     _SH._storeCfg = function(cfgType, cfg) {
  1048.         // Edited to prevent storing the extended cfg/note function contents
  1049.         if (SHUT.orig[cfgType][cfg]) return;
  1050.         //
  1051.         _GS._storeCfg.apply(this, arguments);
  1052.         // Added to unit test the value validity of all cfg/note functions
  1053.         _UT._storeCfg.call(this, cfgType, cfg);
  1054.         //
  1055.     }; // _SH._storeCfg
  1056.  
  1057.     /**
  1058.      * The this pointer is Game_Actor.prototype
  1059.      * @author DoubleX
  1060.      * @param {String} param - The name of the parameter/configuration
  1061.      * @since v1.00a
  1062.      * @version v1.00a
  1063.      */
  1064.     _UT._storeParam = function(param) {
  1065.         _UT._storeCfg.call(this, "params", param);
  1066.     }; // _UT._storeParam
  1067.  
  1068.     /**
  1069.      * The this pointer is Game_Actor.prototype
  1070.      * @author DoubleX
  1071.      * @param {String} cfgType - The configuration type label
  1072.      * @param {String} cfg - The name of the configuration
  1073.      * @since v1.00a
  1074.      * @version v1.00a
  1075.      */
  1076.     _UT._storeCfg = function(cfgType, cfg) {
  1077.         SHUT.orig[cfgType][cfg] = SH[cfgType][cfg];
  1078.         SH[cfgType][cfg] = SHUT.unitTestFunc.call(this, cfgType, cfg);
  1079.     }; // _UT._storeCfg
  1080.  
  1081. })(DoubleX_RMMV.Skill_Hotkeys, DoubleX_RMMV.Skill_Hotkeys_Unit_Test);
  1082.  
  1083. /*----------------------------------------------------------------------------
  1084.  *    # Edit class: Game_Actor                                                
  1085.  *      - Unit tests all the nontrivial non-tautological class invariants    
  1086.  *----------------------------------------------------------------------------*/
  1087.  
  1088. (function(SH, SHUT) {
  1089.  
  1090.     "use strict";
  1091.  
  1092.     SH.Game_Actor.unitTest = { orig: {}, new: {} };
  1093.     var _SH = SH.Game_Actor.new;
  1094.     var _GA = SH.Game_Actor.unitTest.orig, _UT = SH.Game_Actor.unitTest.new;
  1095.  
  1096.     _GA.bindSkillHotkey = _SH._bind;
  1097.     _SH._bind = function(skillId, hotkey) { // v1.00a - v1.00a; Extended
  1098.         _GA.bindSkillHotkey.apply(this, arguments);
  1099.         // Added to unit test class invariants involving this function
  1100.         _UT._bind.call(this, skillId, hotkey);
  1101.         //
  1102.     }; // _SH._bind
  1103.  
  1104.     /**
  1105.      * The this pointer is Game_Actor.prototype
  1106.      * No-op
  1107.      * @author DoubleX
  1108.      * @param {Number} skillId - The id of the skill to have its hotkey bound
  1109.      * @param {String} hotkey - The symbol of the hotkey to be bound
  1110.      * @since v1.00a
  1111.      * @version v1.00a
  1112.      */
  1113.     _UT._bind = function(skillId, hotkey) {
  1114.         var isBound = this.isSkillHotkeysBound(skillId);
  1115.         if (isBound) return;
  1116.         var msg = "DoubleX_RMMV.Skill_Hotkeys.Game_Actor.unitTest.new._bind";
  1117.         msg += "\nskillId: " + skillId + "\nhotkey: " + hotkey;
  1118.         msg += "\nisBound: " + isBound + "\nFailed! isBound should be truthy!";
  1119.         console.error(msg);
  1120.         SHUT.printFailedTestStackTrace.call(this);
  1121.     }; // _UT._bind
  1122.  
  1123. })(DoubleX_RMMV.Skill_Hotkeys, DoubleX_RMMV.Skill_Hotkeys_Unit_Test);
  1124.  
  1125. /*----------------------------------------------------------------------------*/
  1126.  
  1127. } else {
  1128.     alert("To use Skill Hotkeys Unit Test, place it below Skill Hotkeys.");
  1129. } // if (DoubleX_RMMV["Skill Hotkeys"])
  1130.  
  1131. /*============================================================================*/
RAW Paste Data
Top