Skip to content

Commit

Permalink
feat(std/node) Endianness (denoland/deno#3833)
Browse files Browse the repository at this point in the history
  • Loading branch information
cknight authored Jan 30, 2020
1 parent c91dcc4 commit fa7eb76
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 10 deletions.
15 changes: 12 additions & 3 deletions node/os.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.
import { notImplemented } from "./_utils.ts";
import { EOL as fsEOL } from "../fs/eol.ts";

const SEE_GITHUB_ISSUE = "See https://github.com/denoland/deno/issues/3802";

Expand Down Expand Up @@ -96,9 +97,17 @@ export function cpus(): CPUCoreInfo[] {
notImplemented(SEE_GITHUB_ISSUE);
}

/** Not yet implemented */
/**
* Returns a string identifying the endianness of the CPU for which the Deno
* binary was compiled. Possible values are 'BE' for big endian and 'LE' for
* little endian.
**/
export function endianness(): "BE" | "LE" {
notImplemented(SEE_GITHUB_ISSUE);
// Source: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView#Endianness
const buffer = new ArrayBuffer(2);
new DataView(buffer).setInt16(0, 256, true /* littleEndian */);
// Int16Array uses the platform's endianness.
return new Int16Array(buffer)[0] === 256 ? "LE" : "BE";
}

/** Not yet implemented */
Expand Down Expand Up @@ -201,7 +210,7 @@ export const constants = {
}
};

export const EOL = Deno.build.os == "win" ? "\r\n" : "\n";
export const EOL = Deno.build.os == "win" ? fsEOL.CRLF : fsEOL.LF;

const validateInt32 = (
value: number,
Expand Down
14 changes: 7 additions & 7 deletions node/os_test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -154,6 +154,13 @@ test({
}
});

test({
name: "Endianness is determined",
fn() {
assert(["LE", "BE"].includes(os.endianness()));
}
});

// Method is currently implemented correctly for windows but not for any other os
test({
name: "Load average is an array of 3 numbers",
Expand Down Expand Up @@ -187,13 +194,6 @@ test({
Error,
"Not implemented"
);
assertThrows(
() => {
os.endianness();
},
Error,
"Not implemented"
);
assertThrows(
() => {
os.freemem();
Expand Down

0 comments on commit fa7eb76

Please sign in to comment.