diff options
author | Kalle Ranki <kalle.ranki@gmail.com> | 2016-09-04 10:54:41 +0300 |
---|---|---|
committer | Justin M. Keyes <justinkz@gmail.com> | 2016-09-04 09:54:41 +0200 |
commit | e75e9c10dc947bc4aac0aea927e47038bf984b7f (patch) | |
tree | 60a6c0ac9f79c68155ab33321261525352b9b221 | |
parent | 9bba8ba372298d7cfac543085df6546e18d2c256 (diff) | |
download | rneovim-e75e9c10dc947bc4aac0aea927e47038bf984b7f.tar.gz rneovim-e75e9c10dc947bc4aac0aea927e47038bf984b7f.tar.bz2 rneovim-e75e9c10dc947bc4aac0aea927e47038bf984b7f.zip |
test: Add unittest spec for option.c (#5289)
Move typedef expand_T to types.h for tests
Fix lint error for old style comments
Describe 'check_ff_value' valid values as an initial test.
Fix 'get_sts_value' comment inaccuracy and add unit test for it
-rw-r--r-- | src/nvim/ex_cmds_defs.h | 59 | ||||
-rw-r--r-- | src/nvim/option.c | 6 | ||||
-rw-r--r-- | src/nvim/types.h | 1 | ||||
-rw-r--r-- | test/unit/option_spec.lua | 51 |
4 files changed, 82 insertions, 35 deletions
diff --git a/src/nvim/ex_cmds_defs.h b/src/nvim/ex_cmds_defs.h index c2e7add287..8148eb5cee 100644 --- a/src/nvim/ex_cmds_defs.h +++ b/src/nvim/ex_cmds_defs.h @@ -126,39 +126,36 @@ struct exarg { struct condstack *cstack; ///< condition stack for ":if" etc. }; -#define FORCE_BIN 1 /* ":edit ++bin file" */ -#define FORCE_NOBIN 2 /* ":edit ++nobin file" */ - -/* Values for "flags" */ -#define EXFLAG_LIST 0x01 /* 'l': list */ -#define EXFLAG_NR 0x02 /* '#': number */ -#define EXFLAG_PRINT 0x04 /* 'p': print */ - -/* - * used for completion on the command line - */ -typedef struct expand { - int xp_context; /* type of expansion */ - char_u *xp_pattern; /* start of item to expand */ - int xp_pattern_len; /* bytes in xp_pattern before cursor */ - char_u *xp_arg; /* completion function */ - int xp_scriptID; /* SID for completion function */ - int xp_backslash; /* one of the XP_BS_ values */ +#define FORCE_BIN 1 // ":edit ++bin file" +#define FORCE_NOBIN 2 // ":edit ++nobin file" + +// Values for "flags" +#define EXFLAG_LIST 0x01 // 'l': list +#define EXFLAG_NR 0x02 // '#': number +#define EXFLAG_PRINT 0x04 // 'p': print + +// used for completion on the command line +struct expand { + int xp_context; // type of expansion + char_u *xp_pattern; // start of item to expand + int xp_pattern_len; // bytes in xp_pattern before cursor + char_u *xp_arg; // completion function + int xp_scriptID; // SID for completion function + int xp_backslash; // one of the XP_BS_ values #ifndef BACKSLASH_IN_FILENAME - int xp_shell; /* TRUE for a shell command, more - characters need to be escaped */ + int xp_shell; // TRUE for a shell command, more + // characters need to be escaped #endif - int xp_numfiles; /* number of files found by - file name completion */ - char_u **xp_files; /* list of files */ - char_u *xp_line; /* text being completed */ - int xp_col; /* cursor position in line */ -} expand_T; - -/* values for xp_backslash */ -#define XP_BS_NONE 0 /* nothing special for backslashes */ -#define XP_BS_ONE 1 /* uses one backslash before a space */ -#define XP_BS_THREE 2 /* uses three backslashes before a space */ + int xp_numfiles; // number of files found by file name completion + char_u **xp_files; // list of files + char_u *xp_line; // text being completed + int xp_col; // cursor position in line +}; + +// values for xp_backslash +#define XP_BS_NONE 0 // nothing special for backslashes +#define XP_BS_ONE 1 // uses one backslash before a space +#define XP_BS_THREE 2 // uses three backslashes before a space /// Command modifiers ":vertical", ":browse", ":confirm", ":hide", etc. set a /// flag. This needs to be saved for recursive commands, put them in a diff --git a/src/nvim/option.c b/src/nvim/option.c index e53dbfc75a..1ef1c300b9 100644 --- a/src/nvim/option.c +++ b/src/nvim/option.c @@ -6585,10 +6585,8 @@ int get_sw_value(buf_T *buf) return (int)result; } -/* - * Return the effective softtabstop value for the current buffer, using the - * 'tabstop' value when 'softtabstop' is negative. - */ +// Return the effective softtabstop value for the current buffer, +// using the effective shiftwidth value when 'softtabstop' is negative. int get_sts_value(void) { long result = curbuf->b_p_sts < 0 ? get_sw_value(curbuf) : curbuf->b_p_sts; diff --git a/src/nvim/types.h b/src/nvim/types.h index bfe8be2091..35a5d1e2bd 100644 --- a/src/nvim/types.h +++ b/src/nvim/types.h @@ -13,4 +13,5 @@ typedef unsigned char char_u; // Can hold one decoded UTF-8 character. typedef uint32_t u8char_T; +typedef struct expand expand_T; #endif // NVIM_TYPES_H diff --git a/test/unit/option_spec.lua b/test/unit/option_spec.lua new file mode 100644 index 0000000000..8bab0194a2 --- /dev/null +++ b/test/unit/option_spec.lua @@ -0,0 +1,51 @@ +local helpers = require("test.unit.helpers") + +local to_cstr = helpers.to_cstr +local eq = helpers.eq + +local option = helpers.cimport("./src/nvim/option.h") +local globals = helpers.cimport("./src/nvim/globals.h") + +local check_ff_value = function(ff) + return option.check_ff_value(to_cstr(ff)) +end + +describe('check_ff_value', function() + + it('views empty string as valid', function() + eq(1, check_ff_value("")) + end) + + it('views "unix", "dos" and "mac" as valid', function() + eq(1, check_ff_value("unix")) + eq(1, check_ff_value("dos")) + eq(1, check_ff_value("mac")) + end) + + it('views "foo" as invalid', function() + eq(0, check_ff_value("foo")) + end) +end) + +describe('get_sts_value', function() + it([[returns 'softtabstop' when it is non-negative]], function() + globals.curbuf.b_p_sts = 5 + eq(5, option.get_sts_value()) + + globals.curbuf.b_p_sts = 0 + eq(0, option.get_sts_value()) + end) + + it([[returns "effective shiftwidth" when 'softtabstop' is negative]], function() + local shiftwidth = 2 + globals.curbuf.b_p_sw = shiftwidth + local tabstop = 5 + globals.curbuf.b_p_ts = tabstop + globals.curbuf.b_p_sts = -2 + eq(shiftwidth, option.get_sts_value()) + + shiftwidth = 0 + globals.curbuf.b_p_sw = shiftwidth + eq(tabstop, option.get_sts_value()) + end) +end) |