Fix: `i += 2`. Welp! Change-Id: I06061f0c5bb5283c8b85bd3f5a6e52e2eb59d4f5 Reviewed-on: https://cl.tvl.fyi/c/depot/+/7885 Tested-by: BuildkiteCI Reviewed-by: wpcarro <wpcarro@gmail.com> Autosubmit: wpcarro <wpcarro@gmail.com>
		
			
				
	
	
		
			68 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			68 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
import { createRoot } from "react-dom/client";
 | 
						|
import React from "react";
 | 
						|
 | 
						|
 | 
						|
const john = { first: 'John', last: 'Cleese', age: 83, birthday: new Date("10/27/1939") };
 | 
						|
const graham = { first: 'Graham', last: 'Chapman', age: 48, birthday: new Date("01/08/1941") };
 | 
						|
 | 
						|
const xs = [
 | 
						|
    john,
 | 
						|
    graham,
 | 
						|
];
 | 
						|
const cfg = {
 | 
						|
    caseSensitive: false,
 | 
						|
    preferRegex: true,
 | 
						|
    dateKey: 'birthday',
 | 
						|
};
 | 
						|
const tests = [
 | 
						|
    ['support EQ', 'age=83', xs, cfg, [john]],
 | 
						|
    ['supports LT', 'age<83', xs, cfg, [graham]],
 | 
						|
    ['supports LTE', 'age<=83', xs, cfg, [john, graham]],
 | 
						|
    ['supports GT', 'age>48', xs, cfg, [john]],
 | 
						|
    ['supports GTE', 'age>=48', xs, cfg, [john, graham]],
 | 
						|
    ['supports grouping (1)', 'last:/^C/ (age=83 OR age=48)', xs, cfg, [john, graham]],
 | 
						|
    ['supports grouping (2)', '(age=83)', xs, cfg, [john]],
 | 
						|
    ['supports grouping (3)', '(age=83 OR age=48)', xs, cfg, [john, graham]],
 | 
						|
];
 | 
						|
 | 
						|
function equal(xs, ys) {
 | 
						|
    return xs.length === ys.length && xs.every((x, i) => x === ys[i]);
 | 
						|
}
 | 
						|
 | 
						|
class App extends React.Component {
 | 
						|
    constructor(props) {
 | 
						|
        super(props);
 | 
						|
    }
 | 
						|
    render() {
 | 
						|
        return (
 | 
						|
            <table>
 | 
						|
              <thead>
 | 
						|
                <th>pass/fail</th>
 | 
						|
                <th>Label</th>
 | 
						|
                <th>code</th>
 | 
						|
                <th>actual</th>
 | 
						|
                <th>expected</th>
 | 
						|
              </thead>
 | 
						|
              <tbody>
 | 
						|
                {this.props.tests.map(test => {
 | 
						|
                    const [label, query, xs, cfg, expected] = test;
 | 
						|
                    const actual = select(query, xs, cfg);
 | 
						|
                    return (
 | 
						|
                        <tr style={{backgroundColor: equal(actual, expected) ? null : 'red'}}>
 | 
						|
                          <td>{equal(actual, expected) ? "pass" : "fail"}</td>
 | 
						|
                          <td>{label}</td>
 | 
						|
                          <td>select("{query}", {JSON.stringify(xs)}, {JSON.stringify(cfg)})</td>
 | 
						|
                          <td>{JSON.stringify(actual)}</td>
 | 
						|
                          <td>{JSON.stringify(expected)}</td>
 | 
						|
                        </tr>
 | 
						|
                    );
 | 
						|
                })}
 | 
						|
              </tbody>
 | 
						|
            </table>
 | 
						|
        );
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
const container = document.getElementById("mount");
 | 
						|
const root = createRoot(container);
 | 
						|
root.render(<App tests={tests} />);
 |