diff options
Diffstat (limited to 'Master/texmf-dist/doc/latex/oberdiek/bitset-test3.tex')
-rw-r--r-- | Master/texmf-dist/doc/latex/oberdiek/bitset-test3.tex | 1098 |
1 files changed, 1098 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/latex/oberdiek/bitset-test3.tex b/Master/texmf-dist/doc/latex/oberdiek/bitset-test3.tex new file mode 100644 index 00000000000..a53c82704c8 --- /dev/null +++ b/Master/texmf-dist/doc/latex/oberdiek/bitset-test3.tex @@ -0,0 +1,1098 @@ +%% +%% This is file `bitset-test3.tex', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% bitset.dtx (with options: `test2,noetex') +%% +%% This is a generated file. +%% +%% Copyright (C) 2007 by Heiko Oberdiek <oberdiek@uni-freiburg.de> +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either +%% version 1.3 of this license or (at your option) any later +%% version. The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.3 or later is part of all distributions of +%% LaTeX version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status "maintained". +%% +%% This Current Maintainer of this work is Heiko Oberdiek. +%% +%% This work consists of the main source file bitset.dtx +%% and the derived files +%% bitset.sty, bitset.pdf, bitset.ins, bitset.drv, +%% bitset-test1.tex, bitset-test2.tex, bitset-test3.tex. +%% +\NeedsTeXFormat{LaTeX2e} +\nofiles +\documentclass{article} +\makeatletter +\let\SavedNumexpr\numexpr +\let\SavedIfcsname\ifcsname +\let\SavedCurrentgrouplevel\currentgrouplevel +\def\ETeXDisable{% + \let\ifcsname\@undefined + \let\numexpr\@undefined + \let\currentgrouplevel\@undefined +} +\ETeXDisable +\makeatletter +\chardef\BitSet@TestMode=1 % +\makeatother +\usepackage{bitset}[2007/09/28] +\def\ETeXEnable{% + \let\numexpr\SavedNumexpr + \let\ifcsname\SavedIfcsname + \let\currentgrouplevel\SavedCurrentgrouplevel +} +\ETeXEnable +\usepackage{qstest} +\IncludeTests{*} +\LogTests{log}{*}{*} +\makeatletter +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname pdfresettimer\endcsname\relax +\else + \newcount\SummaryTime + \newcount\TestTime + \SummaryTime=\z@ + \newcommand*{\PrintTime}[2]{% + \typeout{% + [Time #1: \strip@pt\dimexpr\number#2sp\relax\space s]% + }% + }% + \newcommand*{\StartTime}[1]{% + \renewcommand*{\TimeDescription}{#1}% + \pdfresettimer + }% + \newcommand*{\TimeDescription}{}% + \newcommand*{\StopTime}{% + \TestTime=\pdfelapsedtime + \global\advance\SummaryTime\TestTime + \PrintTime\TimeDescription\TestTime + }% + \let\saved@qstest\qstest + \let\saved@endqstest\endqstest + \def\qstest#1#2{% + \saved@qstest{#1}{#2}% + \StartTime{#1}% + }% + \def\endqstest{% + \StopTime + \saved@endqstest + }% + \AtEndDocument{% + \PrintTime{summary}\SummaryTime + }% +\fi +\let\orig@qstest\qstest +\let\orig@endqstest\endqstest +\def\qstest#1#2{% + \orig@qstest{#1}{#2}% + \setbox0\hbox\bgroup\begingroup\ignorespaces +} +\def\endqstest{% + \endgroup\egroup + \Expect*{\the\wd0}{0.0pt}% + \orig@endqstest +} +\newcounter{Test} + +\def\TestError#1#2{% + \begingroup + \setcounter{Test}{0}% + \sbox0{% + \def\@PackageError##1##2##3{% + \stepcounter{Test}% + \begingroup + \let\MessageBreak\relax + \ETeXEnable + \Expect{##1}{bitset}% + \Expect*{##2}*{#1}% + \endgroup + }% + \ETeXDisable + #2% + }% + \Expect*{\theTest}{1}% + \Expect*{\the\wd0}{0.0pt}% + \endgroup +} + +\def\TestErrorNegativeIndex#1#2{% + \TestError{Invalid negative index (#1)}{#2}% +} + +\def\TestGetterUndefined#1{% + \CheckUndef{dummy}% + \expandafter\expandafter\expandafter\Expect + \expandafter\expandafter\expandafter{#1{dummy}}{0}% +} + +\def\ExpectBitSet#1#2{% + \expandafter\expandafter\expandafter\Expect + \expandafter\expandafter\expandafter + {\csname BS@#1\endcsname}*{#2}% +} +\def\Check#1#2{% + \ExpectBitSet{#1}{#2}% +} +\def\CheckUndef#1{% + \begingroup + \Expect*{% + \expandafter + \ifx\csname BS@#1\endcsname\relax true\else false\fi + }{true}% + \endgroup +} +\def\RevCheck#1#2{% + \ExpectBitSet{#1}{\Reverse#2!!}% +} +\def\Set#1#2{% + \expandafter\def\csname BS@#1\endcsname{#2}% +} +\def\RevSet#1#2{% + \expandafter\edef\csname BS@#1\endcsname{% + \Reverse#2!!% + }% +} +\def\Reverse#1#2!#3!{% + \ifx\\#2\\% + #1#3% + \expandafter\@gobble + \else + \expandafter\@firstofone + \fi + {\Reverse#2!#1#3!}% +} +\begin{qstest}{Let}{Let} + \CheckUndef{abc}% + \CheckUndef{xyz}% + \bitsetLet{xyz}{abc}% + \CheckUndef{abc}% + \Check{xyz}{0}% + \Set{abc}{1}% + \Check{abc}{1}% + \Check{xyz}{0}% + \bitsetLet{xyz}{abc}% + \Check{abc}{1}% + \Check{xyz}{1}% + \Set{xyz}{11}% + \Check{abc}{1}% + \Check{xyz}{11}% +\end{qstest} + +\begin{qstest}{Reset}{Reset} + \bitsetReset{xyz}% + \Check{xyz}{0}% + \bitsetReset{abc}% + \Check{abc}{0}% + \Set{abc}{10101}% + \bitsetReset{abc}% + \Check{abc}{0}% +\end{qstest} + +\begin{qstest}{Get/Query}{Get/Query} + \expandafter\expandafter\expandafter\Expect + \expandafter\expandafter\expandafter{% + \bitsetGet{dummy}{0}% + }{0}% + \begingroup + \expandafter\def\csname BitSetError:NegativeIndex\endcsname{}% + \Set{abc}{1}% + \Expect*{\bitsetQuery{abc}{-1}{true}{false}}{false}% + \endgroup + \def\Test#1#2#3{% + \Set{abc}{#1}% + \expandafter\expandafter\expandafter\Expect + \expandafter\expandafter\expandafter{\bitsetGet{abc}{#2}}{#3}% + \Expect*{\bitsetQuery{abc}{#2}{true}{false}}% + *{\ifcase#3 false\or true\else error\fi}% + }% + \Test{1}{100}{0}% + \Test{0}{0}{0}% + \Test{1}{0}{1}% + \Test{11}{1}{1}% + \Test{111}{1}{1}% + \Test{101}{1}{0}% + \Test{101}{2}{1}% + \Test{10100110011}{10}{1}% +\end{qstest} + +\begin{qstest}{Size}{Size} + \TestGetterUndefined\bitsetSize + \def\Test#1#2{% + \Set{abc}{#1}% + \expandafter\expandafter\expandafter\Expect + \expandafter\expandafter\expandafter{\bitsetSize{abc}}{#2}% + }% + \Test{0}{0}% + \Test{1}{1}% + \Test{00}{0}% + \Test{0000000}{0}% + \Test{10}{1}% + \Test{01}{2}% + \Test{11}{2}% + \Test{010}{2}% + \Test{011}{3}% + \Test{100110011}{9}% + \Test{0000011111000001111100000}{20}% + \Test{000000000000000000000000011111111111111111111}{45}% +\end{qstest} + +\begin{qstest}{Cardinality}{Cardinality} + \TestGetterUndefined\bitsetCardinality + \def\Test#1#2{% + \Set{abc}{#1}% + \expandafter\expandafter\expandafter\Expect + \expandafter\expandafter\expandafter{% + \bitsetCardinality{abc}% + }{#2}% + }% + \Test{0}{0}% + \Test{1}{1}% + \Test{00}{0}% + \Test{0000000}{0}% + \Test{10}{1}% + \Test{01}{1}% + \Test{11}{2}% + \Test{010}{1}% + \Test{011}{2}% + \Test{100110011}{5}% + \Test{0000011111000001111100000}{10}% + \Test{000000000000000000000000011111111111111111111}{20}% +\end{qstest} + +\begin{qstest}{NextClearBit/NextSetBit}{NextClearBit/NextSetBit} + \def\Test#1#2{% + \expandafter\expandafter\expandafter\Expect + \expandafter\expandafter\expandafter{% + \TestOp{abc}{#1}% + }{#2}% + }% + \def\Clear{\let\TestOp\bitsetNextClearBit}% + \def\Set{\let\TestOp\bitsetNextSetBit}% + \begingroup + \catcode`\:=11 % + \bitsetSetBin{abc}{1}% + \Clear + \Test{-1}{1\BitSetError:NegativeIndex}% + \Set + \Test{-1}{0\BitSetError:NegativeIndex}% + \endgroup + \let\BS@abc\@undefined + \Clear + \Test{0}{0}% + \Test{1}{1}% + \Test{2}{2}% + \Test{100}{100}% + \Set + \Test{0}{-1}% + \Test{1}{-1}% + \Test{100}{-1}% + \bitsetReset{abc}% + \Clear + \Test{0}{0}% + \Test{1}{1}% + \Test{2}{2}% + \Test{100}{100}% + \Set + \Test{0}{-1}% + \Test{1}{-1}% + \Test{100}{-1}% + \bitsetSetBin{abc}{1}% + \Clear + \Test{0}{1}% + \Test{1}{1}% + \Test{2}{2}% + \Test{100}{100}% + \Set + \Test{0}{0}% + \Test{1}{-1}% + \Test{100}{-1}% + \bitsetSetBin{abc}{111000111000111000111}% + \Clear + \Test{0}{3}% + \Test{1}{3}% + \Test{2}{3}% + \Test{3}{3}% + \Test{4}{4}% + \Test{5}{5}% + \Test{6}{9}% + \Test{7}{9}% + \Test{8}{9}% + \Test{9}{9}% + \Test{10}{10}% + \Test{11}{11}% + \Test{12}{15}% + \Test{13}{15}% + \Test{14}{15}% + \Test{15}{15}% + \Test{16}{16}% + \Test{17}{17}% + \Test{18}{21}% + \Test{19}{21}% + \Test{20}{21}% + \Test{21}{21}% + \Test{22}{22}% + \Test{100}{100}% + \Set + \Test{0}{0}% + \Test{1}{1}% + \Test{2}{2}% + \Test{3}{6}% + \Test{4}{6}% + \Test{5}{6}% + \Test{6}{6}% + \Test{7}{7}% + \Test{8}{8}% + \Test{9}{12}% + \Test{10}{12}% + \Test{11}{12}% + \Test{12}{12}% + \Test{13}{13}% + \Test{14}{14}% + \Test{15}{18}% + \Test{16}{18}% + \Test{17}{18}% + \Test{18}{18}% + \Test{19}{19}% + \Test{20}{20}% + \Test{21}{-1}% + \Test{22}{-1}% + \Test{100}{-1}% + \bitsetSetBin{abc}{1111111}% + \Clear + \Test{6}{7}% + \Test{7}{7}% + \Test{8}{8}% + \Test{100}{100}% + \Set + \Test{6}{6}% + \Test{7}{-1}% + \Test{8}{-1}% + \Test{100}{-1}% + \bitsetSetBin{abc}{11111111}% + \Clear + \Test{7}{8}% + \Test{8}{8}% + \Test{9}{9}% + \Test{100}{100}% + \Set + \Test{7}{7}% + \Test{8}{-1}% + \Test{9}{-1}% + \Test{100}{-1}% + \bitsetSetBin{abc}{111111111}% + \Clear + \Test{8}{9}% + \Test{9}{9}% + \Test{10}{10}% + \Test{100}{100}% + \Set + \Test{8}{8}% + \Test{9}{-1}% + \Test{10}{-1}% + \Test{100}{-1}% + \bitsetSetBin{abc}{1111111111}% + \Clear + \Test{9}{10}% + \Test{10}{10}% + \Test{11}{11}% + \Test{100}{100}% + \Set + \Test{9}{9}% + \Test{10}{-1}% + \Test{11}{-1}% + \Test{100}{-1}% +\end{qstest} + +\begin{qstest}{GetSetBitList}{GetSetBitList} + \let\BS@abc\@undefined + \expandafter\expandafter\expandafter\Expect + \expandafter\expandafter\expandafter{% + \bitsetGetSetBitList{abc}% + }{}% + \def\Test#1#2{% + \bitsetSetBin{abc}{#1}% + \expandafter\expandafter\expandafter\Expect + \expandafter\expandafter\expandafter{% + \bitsetGetSetBitList{abc}% + }{#2}% + }% + \Test{0}{}% + \Test{1}{0}% + \Test{10}{1}% + \Test{11}{0,1}% + \Test{10110100}{2,4,5,7}% + \Test{101101001010011}{0,1,4,6,9,11,12,14}% +\end{qstest} + +\begin{qstest}{GetDec}{GetDec} + \TestGetterUndefined\bitsetGetDec + \def\Test#1#2{% + \RevSet{abc}{#1}% + \begingroup\expandafter\expandafter\expandafter\endgroup + \expandafter\expandafter\expandafter\Expect + \expandafter\expandafter\expandafter{% + \bitsetGetDec{abc}% + }{#2}% + }% + \Test{0}{0}% + \Test{1}{1}% + \Test{10}{2}% + \Test{11}{3}% + \Test{100}{4}% + \Test{101}{5}% + \Test{110}{6}% + \Test{111}{7}% + \Test{1000}{8}% + \Test{000111}{7}% + \Test{1111111111111111% + 111111111111111}{2147483647}% + \Test{0001111111111111111% + 111111111111111}{2147483647}% + \Test{1000000000000000% + 0000000000000000}{2147483648}% + \Test{1000000000000000% + 00000000000000000}{4294967296}% + \Test{0001000000000000000% + 00000000000000000}{4294967296}% + \Test{1100000000000000% + 00000000000000011}{6442450947}% +\end{qstest} + +\begin{qstest}{Clear}{Clear} + \def\Test#1#2#3{% + \RevSet{abc}{#1}% + \bitsetClear{abc}{#2}% + \Expect*{\BS@abc}*{\Reverse#3!!}% + }% + \bitsetClear{abc}{2}% + \RevCheck{abc}{0}% + \TestErrorNegativeIndex{-1}{\bitsetClear{abc}{-1}}% + \RevCheck{abc}{0}% + \Test{0}{0}{0}% + \Test{1}{0}{0}% + \Test{111}{1}{101}% + \Test{111}{30}{111}% + \Test{0000111}{5}{0000111}% 111 would also be ok + \Test{10000111}{5}{10000111}% + \Test{1001001}{3}{1000001}% +\end{qstest} + +\begin{qstest}{Set}{Set} + \def\Test#1#2#3{% + \RevSet{abc}{#1}% + \bitsetSet{abc}{#2}% + \Expect*{\BS@abc}*{\Reverse#3!!}% + }% + \bitsetSet{abc}{2}% + \RevCheck{abc}{100}% + \TestErrorNegativeIndex{-1}{\bitsetSet{abc}{-1}}% + \RevCheck{abc}{100}% + \Test{0}{0}{1}% + \Test{1}{0}{1}% + \Test{100}{1}{110}% + \Test{111}{1}{111}% + \Test{11}{1}{11}% + \Test{11}{2}{111}% + \Test{11}{3}{1011}% + \Test{111}{10}{10000000111}% + \Test{0000111}{5}{0100111}% 100111 would also be ok + \Test{10000111}{5}{10100111}% + \Test{1000001}{3}{1001001}% + \Test{1001001}{3}{1001001}% +\end{qstest} + +\begin{qstest}{Flip}{Flip} + \def\Test#1#2#3{% + \RevSet{abc}{#1}% + \bitsetFlip{abc}{#2}% + \Expect*{\BS@abc}*{\Reverse#3!!}% + }% + \bitsetFlip{abc}{2}% + \RevCheck{abc}{100}% + \TestErrorNegativeIndex{-1}{\bitsetFlip{abc}{-1}}% + \RevCheck{abc}{100}% + \Test{0}{0}{1}% + \Test{1}{0}{0}% + \Test{0}{2}{100}% + \Test{100}{1}{110}% + \Test{111}{1}{101}% + \Test{11}{1}{1}% + \Test{11}{2}{111}% + \Test{11}{3}{1011}% + \Test{111}{10}{10000000111}% + \Test{0000111}{5}{0100111}% 100111 would also be ok + \Test{10000111}{5}{10100111}% + \Test{1000001}{3}{1001001}% + \Test{1001001}{3}{1000001}% + \Test{11111}{2}{11011}% +\end{qstest} + +\begin{qstest}{SetValue}{SetValue} + \def\Test#1#2{% + \TestError{Invalid bit value (#2) not in range 0..1}{% + \bitsetSetValue{abc}{#1}{#2}% + }% + }% + \Test{0}{-1}% + \Test{0}{2}% + \Test{0}{10}% + \def\Test#1#2#3{% + \let\BS@abc\@undefined + \bitsetSetValue{abc}{#1}{#2}% + \bitsetSetBin{result}{#3}% + \Expect*{\BS@abc}*{\BS@result}% + }% + \Test{0}{0}{0}% + \Test{0}{1}{1}% + \Test{1}{0}{0}% + \Test{1}{1}{10}% + \def\Test#1#2#3#4{% + \bitsetSetBin{abc}{#1}% + \bitsetSetBin{result}{#4}% + \bitsetSetValue{abc}{#2}{#3}% + \Expect*{\BS@abc}*{\BS@result}% + }% + \Test{0}{0}{0}{0}% + \Test{0}{0}{0}{0}% + \Test{0}{0}{1}{1}% + \Test{0}{1}{0}{0}% + \Test{0}{1}{1}{10}% + \Test{1010}{2}{1}{1110}% + \Test{1010}{4}{1}{11010}% + \Test{1010}{6}{1}{1001010}% + \Test{1010}{1}{0}{1000}% + \Test{1010}{2}{0}{1010}% + \Test{1010}{3}{0}{10}% + \Test{1010}{4}{0}{1010}% + \Test{1010}{6}{0}{1010}% + \Test{1010}{2}{\csname iffalse\endcsname 0\else 1\fi}{1110}% + \Test{1010}{1}{\csname iffalse\endcsname 1\else 0\fi}{1000}% +\end{qstest} + +\begin{qstest}{IsDefined}{IsDefined} + \let\BS@abc\@undefined + \Expect*{\bitsetIsDefined{abc}{true}{false}}{false}% + \bitsetReset{abc}% + \Expect*{\bitsetIsDefined{abc}{true}{false}}{true}% +\end{qstest} + +\begin{qstest}{IsEmpty}{IsEmpty} + \let\BS@abc\@undefined + \Expect*{\bitsetIsEmpty{abc}{true}{false}}{true}% + \bitsetReset{abc}% + \Expect*{\bitsetIsEmpty{abc}{true}{false}}{true}% + \bitsetSet{abc}{1}% + \Expect*{\bitsetIsEmpty{abc}{true}{false}}{false}% +\end{qstest} + +\begin{qstest}{Equals}{Equals} + \def\Test#1#2#3{% + \Expect*{\bitsetEquals{#1}{#2}{true}{false}}{#3}% + }% + \let\BS@abc\@undefined + \Test{abc}{abc}{true}% + \Test{abc}{foo}{true}% + \Test{foo}{abc}{true}% + \bitsetReset{abc}% + \Test{abc}{abc}{true}% + \Test{abc}{foo}{false}% + \Test{foo}{abc}{false}% + \bitsetReset{foo}% + \Test{abc}{foo}{true}% + \Test{foo}{abc}{true}% + \bitsetSet{abc}{4}% + \Test{abc}{foo}{false}% + \Test{foo}{abc}{false}% + \bitsetFlip{foo}{4}% + \Test{abc}{foo}{true}% + \Test{foo}{abc}{true}% +\end{qstest} + +\begin{qstest}{Intersects}{Intersects} + \def\Test#1{% + \Expect*{\bitsetIntersects{abc}{foo}{true}{false}}{#1}% + }% + \let\BS@abc\@undefined + \let\BS@foo\@undefined + \Test{false}% + \Set{abc}{0}% + \Test{false}% + \Set{foo}{0}% + \Test{false}% + \let\BS@abc\@undefined + \Test{false}% + \Set{foo}{1}% + \Test{false}% + \Set{abc}{0}% + \Test{false}% + \Set{abc}{1}% + \Test{true}% + \let\BS@foo\@undefined + \Test{false}% + \Set{foo}{0}% + \Test{false}% + \def\Test#1#2#3{% + \bitsetSetBin{abc}{#1}% + \bitsetSetBin{foo}{#2}% + \Expect*{\bitsetIntersects{abc}{foo}{true}{false}}{#3}% + }% + \Test{1010}{0101}{false}% + \Test{0}{10}{false}% + \Test{1}{11}{true}% + \Test{11}{1}{true}% + \Test{10}{1}{false}% +\end{qstest} + +\begin{qstest}{And/AndNot/Or/Xor}{And/AndNot/Or/Xor} + \def\@Test#1#2#3#4#5{% + \begingroup + #5% + \begingroup + \let\BS@foo\@undefined + \csname bitset#1\endcsname{abc}{foo}% + \CheckUndef{foo}% + \Check{abc}{#2}% + \endgroup + \begingroup + \bitsetReset{foo}% + \csname bitset#1\endcsname{abc}{foo}% + \Check{foo}{0}% + \Check{abc}{#3}% + \endgroup + \begingroup + \def\BS@foo{0101}% + \csname bitset#1\endcsname{abc}{foo}% + \Check{foo}{0101}% + \Check{abc}{#4}% + \endgroup + \endgroup + }% + \def\Test#1{% + \def\Op{#1}% + \Test@ + }% + \def\Test@#1#2#3#4#5#6#7#8#9{% + \@Test\Op{#1}{#2}{#3}{% + \let\BS@abc\@undefined + }% + \@Test\Op{#4}{#5}{#6}{% + \bitsetReset{abc}% + }% + \@Test\Op{#7}{#8}{#9}{% + \def\BS@abc{1001}% + }% + }% + \Test{And}% + {0}{0}{0}% + {0}{0}{0}% + {0}{0}{0001}% + \Test{AndNot}% + {0}{0}{0}% + {0}{0}{0}% + {1001}{1001}{1}% + \Test{Or}% + {0}{0}{0101}% + {0}{0}{0101}% + {1001}{1001}{1101}% + \Test{Xor}% + {0}{0}{0101}% + {0}{0}{0101}% + {1001}{1001}{11}% + \def\Test#1#2#3{% + \bitsetSetBin{abc}{#1}% + \bitsetSetBin{foo}{#2}% + \csname bitset\Op\endcsname{abc}{foo}% + \RevCheck{foo}{#2}% + \RevCheck{abc}{#3}% + }% + \def\Op{And}% + \Test{1}{111}{1}% + \Test{111}{1}{1}% + \Test{10}{111}{10}% + \Test{111}{10}{10}% + \Test{111}{1000}{0}% + \Test{1000}{111}{0}% + \def\Op{AndNot}% + \Test{1010}{11}{1000}% + \Test{100}{100}{0}% + \Test{111}{1111}{0}% + \Test{100}{111}{0}% + \def\Op{Or}% + \Test{0}{0}{0}% + \Test{1}{0}{1}% + \Test{0}{1}{1}% + \Test{1}{1}{1}% + \Test{1000}{10}{1010}% + \Test{10}{1000}{1010}% + \def\Op{Xor}% + \Test{0}{0}{0}% + \Test{1}{0}{1}% + \Test{0}{1}{1}% + \Test{1}{1}{0}% + \Test{1000}{10}{1010}% + \Test{10}{1000}{1010}% + \Test {110011001100}% + {111000111000111}% + {111110100001011}% + \Test{111000111000111}% + {110011001100}% + {111110100001011}% +\end{qstest} + +\begin{qstest}{GetUndef}{GetUndef, GetBin, GetOct, GetHex} + \def\TestUndef#1#2{% + \let\BS@abc\@undefined + \expandafter\expandafter\expandafter\Expect + \expandafter\expandafter\expandafter{% + \x{abc}{#1}% + }{#2}% + }% + \let\x\bitsetGetBin + \TestUndef{-1}{0}% + \TestUndef{0}{0}% + \TestUndef{1}{0}% + \TestUndef{2}{00}% + \TestUndef{8}{00000000}% + \let\x\bitsetGetOct + \TestUndef{-1}{0}% + \TestUndef{0}{0}% + \TestUndef{1}{0}% + \TestUndef{2}{0}% + \TestUndef{3}{0}% + \TestUndef{4}{00}% + \TestUndef{5}{00}% + \TestUndef{6}{00}% + \TestUndef{7}{000}% + \TestUndef{8}{000}% + \TestUndef{9}{000}% + \TestUndef{10}{0000}% + \let\x\bitsetGetHex + \TestUndef{-1}{0}% + \TestUndef{0}{0}% + \TestUndef{1}{0}% + \TestUndef{2}{0}% + \TestUndef{3}{0}% + \TestUndef{4}{0}% + \TestUndef{5}{00}% + \TestUndef{6}{00}% + \TestUndef{7}{00}% + \TestUndef{8}{00}% + \TestUndef{9}{000}% + \TestUndef{10}{000}% + \TestUndef{12}{000}% + \TestUndef{13}{0000}% + \TestUndef{16}{0000}% + \TestUndef{17}{00000}% +\end{qstest} + +\begin{qstest}{SetBin}{SetBin} + \def\Test#1#2{% + \let\BS@abc\@undefined + \bitsetSetBin{abc}{#1}% + \expandafter\Expect\expandafter{\BS@abc}{#2}% + }% + \Test{}{0}% + \Test{0}{0}% + \Test{1}{1}% + \Test{10}{01}% + \Test{11}{11}% + \Test{010}{01}% + \Test{011}{11}% + \Test{0010}{01}% + \Test{1010}{0101}% +\end{qstest} + +\begin{qstest}{SetOct}{SetOct} + \def\Test#1#2{% + \bitsetSetOct{abc}{#1}% + \expandafter\Expect\expandafter{\BS@abc}{#2}% + }% + \Test{}{0}% + \Test{0}{0}% + \Test{000}{0}% + \Test{1}{1}% + \Test{001}{1}% + \Test{010}{0001}% + \Test{020}{00001}% + \Test{42}{010001}% + \Test{377}{11111111}% + \Test{0377}{11111111}% + \Test{76543210}{000100010110001101011111}% + \Test{ 0 7 0 7 1 }{100111000111}% +\end{qstest} + +\begin{qstest}{SetHex}{SetHex} + \def\Test#1#2{% + \bitsetSetHex{abc}{#1}% + \expandafter\Expect\expandafter{\BS@abc}{#2}% + }% + \Test{}{0}% + \Test{0}{0}% + \Test{000}{0}% + \Test{1}{1}% + \Test{001}{1}% + \Test{010}{00001}% + \Test{020}{000001}% + \Test{42}{0100001}% + \Test{3F}{111111}% + \Test{03F}{111111}% + \Test{43210}{0000100001001100001}% + \Test{98765}{10100110111000011001}% + \Test{FEDCBA}{010111010011101101111111}% + \Test{ 0 F 0 F 1 }{1000111100001111}% +\end{qstest} + +\begin{qstest}{SetDec}{SetDec} + \def\Test#1#2{% + \bitsetSetDec{abc}{#1}% + \expandafter\Expect\expandafter{\BS@abc}{#2}% + }% + \Test{}{0}% + \Test{0}{0}% + \Test{000}{0}% + \Test{1}{1}% + \Test{7}{111}% + \Test{8}{0001}% + \Test{001}{1}% + \Test{010}{0101}% + \Test{020}{00101}% + \Test{53}{101011}% + \Test{255}{11111111}% + \Test{256}{000000001}% + \Test{999999999}{111111111001001101011001110111}% + \Test{1000000000}{000000000101001101011001110111}% + \Test{4210987654}{01100001010010010111111101011111}% + \Test{2147483647}{1111111111111111111111111111111}% + \Test{2147483648}{00000000000000000000000000000001}% +\end{qstest} + +\begin{qstest}{GetBin}{GetBin} + \def\TestUndef#1#2{% + \let\BS@abc\@undefined + \expandafter\expandafter\expandafter\Expect + \expandafter\expandafter\expandafter{% + \bitsetGetBin{abc}{#1}% + }{#2}% + }% + \TestUndef{-1}{0}% + \TestUndef{0}{0}% + \TestUndef{1}{0}% + \TestUndef{2}{00}% + \TestUndef{8}{00000000}% + \def\Test#1#2{% + \bitsetSetBin{abc}{#2}% + \expandafter\expandafter\expandafter\Expect + \expandafter\expandafter\expandafter{% + \bitsetGetBin{abc}{#1}% + }{#2}% + }% + \Test{-1}{0}% + \Test{0}{0}% + \Test{1}{0}% + \Test{1}{1}% + \Test{2}{01}% + \Test{2}{10}% + \Test{3}{010}% + \Test{2}{00}% + \Test{2}{01}% + \Test{8}{00101100}% + \Test{2}{10101}% + \Test{-100}{11011}% +\end{qstest} + +\begin{qstest}{GetOct}{GetOct} + \def\Test#1#2#3{% + \edef\x{\zap@space#1 \@empty}% + \edef\x{\noexpand\bitsetSetBin{abc}{\x}}% + \x + \expandafter\expandafter\expandafter\Expect + \expandafter\expandafter\expandafter{% + \bitsetGetOct{abc}{#2}% + }{#3}% + }% + \Test{111 110 101 100 011 010 001 000}{0}{76543210}% + \Test{000 111}{0}{7}% + \Test{101 000}{-1}{50}% + \Test{111}{-1}{7}% + \Test{111}{0}{7}% + \Test{111}{1}{7}% + \Test{111}{3}{7}% + \Test{111}{4}{07}% + \Test{111}{6}{07}% + \Test{111}{7}{007}% + \Test{111 010}{6}{72}% + \Test{111 010}{7}{072}% + \Test{011 111}{0}{37}% + \Test{011 111}{6}{37}% + \Test{011 111}{7}{037}% + \Test{001 111}{0}{17}% + \Test{001 111}{6}{17}% + \Test{001 111}{7}{017}% +\end{qstest} + +\begin{qstest}{GetHex}{GetHex} + \def\Test#1#2#3{% + \bitsetSetBin{abc}{#1}% + \expandafter\expandafter\expandafter\Expect + \expandafter\expandafter\expandafter{% + \bitsetGetHex{abc}{#2}% + }{#3}% + }% + \Test{1111 1110 1101 1100 1011 1010 1001 1000}{0}{FEDCBA98}% + \Test{0111 0110 0101 0100 0011 0010 0001 0000}{0}{76543210}% + \Test{0000 1111}{0}{F}% + \Test{0101 0000}{-1}{50}% + \Test{1111}{-1}{F}% + \Test{1111}{0}{F}% + \Test{1111}{1}{F}% + \Test{1111}{4}{F}% + \Test{1111}{5}{0F}% + \Test{1111}{8}{0F}% + \Test{1111}{9}{00F}% + \Test{1111 0010}{8}{F2}% + \Test{1111 0010}{9}{0F2}% + \Test{0111 1111}{0}{7F}% + \Test{0111 1111}{8}{7F}% + \Test{0111 1111}{9}{07F}% + \Test{0011 1111}{0}{3F}% + \Test{0011 1111}{8}{3F}% + \Test{0011 1111}{9}{03F}% + \Test{0001 1111}{0}{1F}% + \Test{0001 1111}{8}{1F}% + \Test{0001 1111}{9}{01F}% +\end{qstest} + +\begin{qstest}{Range}{Range} + \TestError{% + Wrong index numbers in range [9..8]\MessageBreak% hash-ok + for clear/set/flip on bit set `abc'.\MessageBreak + The lower index exceeds the upper index.\MessageBreak + Canceling the operation as error recovery% + }{% + \bitsetSetRange{abc}{9}{8}% + }% + \def\TestErrorNegInd#1#2#3#4#5#6{% + \TestError{% + Negative index in range [#2..#3]\MessageBreak % hash-ok + for \string\bitset #1Range on bit set `abc'.\MessageBreak + Using [#4..#5] as error recovery% hash-ok + }{% + \csname bitset#1Range\endcsname{abc}{#2}{#3}% + \global\let\BS@global\BS@abc + }% + \Check{global}{#6}% + }% + \Set{abc}{111}% + \TestErrorNegInd{Clear}{-1}{0}{0}{0}{111}% + \TestErrorNegInd{Clear}{0}{-1}{0}{0}{111}% + \TestErrorNegInd{Clear}{-2}{2}{0}{2}{001}% + \bitsetReset{abc}% + \TestErrorNegInd{Set}{-1}{0}{0}{0}{0}% + \TestErrorNegInd{Set}{0}{-1}{0}{0}{0}% + \TestErrorNegInd{Set}{-2}{2}{0}{2}{11}% + \Set{abc}{101}% + \TestErrorNegInd{Flip}{-1}{0}{0}{0}{101}% + \TestErrorNegInd{Flip}{0}{-1}{0}{0}{101}% + \TestErrorNegInd{Flip}{-2}{2}{0}{2}{011}% + \def\Test#1#2#3#4{% + \bitsetSetBin{abc}{#1}% + \csname bitset\TestOp Range\endcsname{abc}{#2}{#3}% + \Expect*{\bitsetGetBin{abc}{0}}{#4}% + }% + \def\TestOp{Clear}% + \Test{0}{0}{1}{0}% + \Test{1111}{1}{2}{1101}% + \Test{1111}{1}{3}{1001}% + \Test{1111111100000000}{12}{14}{1100111100000000}% + \def\TestOp{Set}% + \Test{0}{0}{1}{1}% + \Test{1000}{1}{2}{1010}% + \Test{0}{1}{2}{10}% + \Test{1}{12}{15}{111000000000001}% + \Test{1111}{1}{3}{1111}% + \Test{1000000000000000}{12}{14}{1011000000000000}% + \def\TestOp{Flip}% + \Test{0}{0}{1}{1}% + \Test{1}{0}{1}{0}% + \Test{10101010}{1}{5}{10110100}% + \def\Test#1#2#3#4#5{% + \bitsetSetBin{abc}{#1}% + \bitsetSetValueRange{abc}{#2}{#3}{#4}% + \Expect*{\bitsetGetBin{abc}{0}}{#5}% + }% + \Test{0}{0}{1}{0}{0}% + \Test{0}{0}{1}{1}{1}% + \Test{1010}{1}{3}{0}{1000}% + \Test{1010}{1}{3}{1}{1110}% +\end{qstest} + +\begin{qstest}{ShiftLeft/ShiftRight}{ShiftLeft/ShiftRight} + \def\@Test#1#2{% + \let\BS@abc\@undefined + \csname bitsetShift#1\endcsname{abc}{#2}% + \Expect*{\BS@abc}{0}% + }% + \def\Test#1{% + \@Test{Left}{#1}% + \@Test{Right}{#1}% + }% + \Test{-16}% + \Test{-1}% + \Test{0}% + \Test{1}% + \Test{16}% + \def\Test#1#2#3{% + \bitsetSetBin{abc}{#1}% + \bitsetSetBin{result}{#3}% + \csname bitsetShift\Op\endcsname{abc}{#2}% + \Expect*{\bitsetGetBin{abc}{0}}*{\bitsetGetBin{result}{0}}% + }% + \def\Op{Left}% + \Test{0}{0}{0}% + \Test{0}{1}{0}% + \Test{0}{-1}{0}% + \Test{1}{0}{1}% + \Test{1}{1}{10}% + \Test{1}{-1}{0}% + \Test{10}{1}{100}% + \Test{10}{-1}{1}% + \Test{1}{32}{100000000000000000000000000000000}% + \Test{1}{-100}{0}% + \def\Op{Right}% + \Test{0}{0}{0}% + \Test{0}{1}{0}% + \Test{0}{-1}{0}% + \Test{1}{0}{1}% + \Test{1}{1}{0}% + \Test{1}{-1}{10}% + \Test{10}{1}{1}% + \Test{10}{-1}{100}% + \Test{1}{-32}{100000000000000000000000000000000}% + \Test{1}{100}{0}% + \Test{110110110110110}{10}{11011}% + \Test{110110110110110}{100}{0}% + \Test{1}{100000}{0}% +\end{qstest} + +\begin{qstest}{Profile: Set}{Profile: Set} + \bitsetSet{abc}{4095}% + \global\let\BS@global\BS@abc +\end{qstest} + +\begin{qstest}{Profile: Get}{Profile: Get} + \edef\x{\bitsetGet{global}{4095}}% +\end{qstest} + +\begin{document} +\end{document} +\endinput +%% +%% End of file `bitset-test3.tex'. |