165dad4b091d2925543c6326db635d0f7cf9e1edcager@chromium.org// Copyright 2009 the V8 project authors. All rights reserved.
265dad4b091d2925543c6326db635d0f7cf9e1edcager@chromium.org// Redistribution and use in source and binary forms, with or without
365dad4b091d2925543c6326db635d0f7cf9e1edcager@chromium.org// modification, are permitted provided that the following conditions are
465dad4b091d2925543c6326db635d0f7cf9e1edcager@chromium.org// met:
565dad4b091d2925543c6326db635d0f7cf9e1edcager@chromium.org//
665dad4b091d2925543c6326db635d0f7cf9e1edcager@chromium.org//     * Redistributions of source code must retain the above copyright
765dad4b091d2925543c6326db635d0f7cf9e1edcager@chromium.org//       notice, this list of conditions and the following disclaimer.
865dad4b091d2925543c6326db635d0f7cf9e1edcager@chromium.org//     * Redistributions in binary form must reproduce the above
965dad4b091d2925543c6326db635d0f7cf9e1edcager@chromium.org//       copyright notice, this list of conditions and the following
1065dad4b091d2925543c6326db635d0f7cf9e1edcager@chromium.org//       disclaimer in the documentation and/or other materials provided
1165dad4b091d2925543c6326db635d0f7cf9e1edcager@chromium.org//       with the distribution.
1265dad4b091d2925543c6326db635d0f7cf9e1edcager@chromium.org//     * Neither the name of Google Inc. nor the names of its
1365dad4b091d2925543c6326db635d0f7cf9e1edcager@chromium.org//       contributors may be used to endorse or promote products derived
1465dad4b091d2925543c6326db635d0f7cf9e1edcager@chromium.org//       from this software without specific prior written permission.
1565dad4b091d2925543c6326db635d0f7cf9e1edcager@chromium.org//
1665dad4b091d2925543c6326db635d0f7cf9e1edcager@chromium.org// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
1765dad4b091d2925543c6326db635d0f7cf9e1edcager@chromium.org// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
1865dad4b091d2925543c6326db635d0f7cf9e1edcager@chromium.org// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
1965dad4b091d2925543c6326db635d0f7cf9e1edcager@chromium.org// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
2065dad4b091d2925543c6326db635d0f7cf9e1edcager@chromium.org// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
2165dad4b091d2925543c6326db635d0f7cf9e1edcager@chromium.org// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
2265dad4b091d2925543c6326db635d0f7cf9e1edcager@chromium.org// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
2365dad4b091d2925543c6326db635d0f7cf9e1edcager@chromium.org// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
2465dad4b091d2925543c6326db635d0f7cf9e1edcager@chromium.org// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
2565dad4b091d2925543c6326db635d0f7cf9e1edcager@chromium.org// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
2665dad4b091d2925543c6326db635d0f7cf9e1edcager@chromium.org// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2765dad4b091d2925543c6326db635d0f7cf9e1edcager@chromium.org
2865dad4b091d2925543c6326db635d0f7cf9e1edcager@chromium.org// Load CSV parser implementation from <project root>/tools.
2965dad4b091d2925543c6326db635d0f7cf9e1edcager@chromium.org// Files: tools/csvparser.js
3065dad4b091d2925543c6326db635d0f7cf9e1edcager@chromium.org
31496c03a64f12710e837204e261ef155601247895sgjesse@chromium.orgvar parser = new CsvParser();
3265dad4b091d2925543c6326db635d0f7cf9e1edcager@chromium.org
3365dad4b091d2925543c6326db635d0f7cf9e1edcager@chromium.orgassertEquals(
3465dad4b091d2925543c6326db635d0f7cf9e1edcager@chromium.org    [],
3565dad4b091d2925543c6326db635d0f7cf9e1edcager@chromium.org    parser.parseLine(''));
3665dad4b091d2925543c6326db635d0f7cf9e1edcager@chromium.org
3765dad4b091d2925543c6326db635d0f7cf9e1edcager@chromium.orgassertEquals(
3865dad4b091d2925543c6326db635d0f7cf9e1edcager@chromium.org    ['', ''],
3965dad4b091d2925543c6326db635d0f7cf9e1edcager@chromium.org    parser.parseLine(','));
4065dad4b091d2925543c6326db635d0f7cf9e1edcager@chromium.org
4165dad4b091d2925543c6326db635d0f7cf9e1edcager@chromium.orgassertEquals(
4265dad4b091d2925543c6326db635d0f7cf9e1edcager@chromium.org    ['1997','Ford','E350'],
4365dad4b091d2925543c6326db635d0f7cf9e1edcager@chromium.org    parser.parseLine('1997,Ford,E350'));
4465dad4b091d2925543c6326db635d0f7cf9e1edcager@chromium.org
4565dad4b091d2925543c6326db635d0f7cf9e1edcager@chromium.orgassertEquals(
4665dad4b091d2925543c6326db635d0f7cf9e1edcager@chromium.org    ['1997','Ford','E350'],
4765dad4b091d2925543c6326db635d0f7cf9e1edcager@chromium.org    parser.parseLine('"1997","Ford","E350"'));
4865dad4b091d2925543c6326db635d0f7cf9e1edcager@chromium.org
4965dad4b091d2925543c6326db635d0f7cf9e1edcager@chromium.orgassertEquals(
5065dad4b091d2925543c6326db635d0f7cf9e1edcager@chromium.org    ['1997','Ford','E350','Super, luxurious truck'],
5165dad4b091d2925543c6326db635d0f7cf9e1edcager@chromium.org    parser.parseLine('1997,Ford,E350,"Super, luxurious truck"'));
5265dad4b091d2925543c6326db635d0f7cf9e1edcager@chromium.org
5365dad4b091d2925543c6326db635d0f7cf9e1edcager@chromium.orgassertEquals(
5465dad4b091d2925543c6326db635d0f7cf9e1edcager@chromium.org    ['1997','Ford','E350','Super "luxurious" truck'],
5565dad4b091d2925543c6326db635d0f7cf9e1edcager@chromium.org    parser.parseLine('1997,Ford,E350,"Super ""luxurious"" truck"'));
5665dad4b091d2925543c6326db635d0f7cf9e1edcager@chromium.org
5765dad4b091d2925543c6326db635d0f7cf9e1edcager@chromium.orgassertEquals(
5865dad4b091d2925543c6326db635d0f7cf9e1edcager@chromium.org    ['1997','Ford','E350','Super "luxurious" "truck"'],
5965dad4b091d2925543c6326db635d0f7cf9e1edcager@chromium.org    parser.parseLine('1997,Ford,E350,"Super ""luxurious"" ""truck"""'));
6065dad4b091d2925543c6326db635d0f7cf9e1edcager@chromium.org
6165dad4b091d2925543c6326db635d0f7cf9e1edcager@chromium.orgassertEquals(
6265dad4b091d2925543c6326db635d0f7cf9e1edcager@chromium.org    ['1997','Ford','E350','Super "luxurious""truck"'],
6365dad4b091d2925543c6326db635d0f7cf9e1edcager@chromium.org    parser.parseLine('1997,Ford,E350,"Super ""luxurious""""truck"""'));
6465dad4b091d2925543c6326db635d0f7cf9e1edcager@chromium.org
6565dad4b091d2925543c6326db635d0f7cf9e1edcager@chromium.orgassertEquals(
6665dad4b091d2925543c6326db635d0f7cf9e1edcager@chromium.org    ['shared-library','/lib/ld-2.3.6.so','0x489a2000','0x489b7000'],
6765dad4b091d2925543c6326db635d0f7cf9e1edcager@chromium.org    parser.parseLine('shared-library,"/lib/ld-2.3.6.so",0x489a2000,0x489b7000'));
6865dad4b091d2925543c6326db635d0f7cf9e1edcager@chromium.org
6965dad4b091d2925543c6326db635d0f7cf9e1edcager@chromium.orgassertEquals(
7065dad4b091d2925543c6326db635d0f7cf9e1edcager@chromium.org    ['code-creation','LazyCompile','0xf6fe2d20','1201','APPLY_PREPARE native runtime.js:165'],
7165dad4b091d2925543c6326db635d0f7cf9e1edcager@chromium.org    parser.parseLine('code-creation,LazyCompile,0xf6fe2d20,1201,"APPLY_PREPARE native runtime.js:165"'));
7265dad4b091d2925543c6326db635d0f7cf9e1edcager@chromium.org
7365dad4b091d2925543c6326db635d0f7cf9e1edcager@chromium.orgassertEquals(
7465dad4b091d2925543c6326db635d0f7cf9e1edcager@chromium.org    ['code-creation','LazyCompile','0xf6fe4bc0','282',' native v8natives.js:69'],
7565dad4b091d2925543c6326db635d0f7cf9e1edcager@chromium.org    parser.parseLine('code-creation,LazyCompile,0xf6fe4bc0,282," native v8natives.js:69"'));
7665dad4b091d2925543c6326db635d0f7cf9e1edcager@chromium.org
7765dad4b091d2925543c6326db635d0f7cf9e1edcager@chromium.orgassertEquals(
7865dad4b091d2925543c6326db635d0f7cf9e1edcager@chromium.org    ['code-creation','RegExp','0xf6c21c00','826','NccyrJroXvg\\/([^,]*)'],
7965dad4b091d2925543c6326db635d0f7cf9e1edcager@chromium.org    parser.parseLine('code-creation,RegExp,0xf6c21c00,826,"NccyrJroXvg\\/([^,]*)"'));
80b302e56e5b70c4504faa2adf4ec3efb64a9d3e38sgjesse@chromium.org
81b302e56e5b70c4504faa2adf4ec3efb64a9d3e38sgjesse@chromium.orgassertEquals(
82b302e56e5b70c4504faa2adf4ec3efb64a9d3e38sgjesse@chromium.org    ['code-creation','Function','0x42f0a0','163',''],
83b302e56e5b70c4504faa2adf4ec3efb64a9d3e38sgjesse@chromium.org    parser.parseLine('code-creation,Function,0x42f0a0,163,""'));
84