DataView instances with different contents compare as equal

Đang mở Phù hợp với người mới
#112 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

Đánh giá

Độ khó
2/5
Thời gian dự kiến
1-3 giờ
Mức phù hợp với người mới
78/100
Loại issue
Lỗi
Độ rõ ràng
Đặc tả rõ ràng
Mức độ hoạt động
Sôi nổi
Công nghệ
javascript, node.js
Lĩnh vực
backend, testing-qa

Hướng nghiên cứu

Đọc cách xử lý deepEqual cho ArrayBuffer và fallback so sánh các khóa enumerable riêng; issue cho biết hiện tại DataView đi đến fallback đó. Thêm một trường hợp tái hiện dựa trên ví dụ DataView được cung cấp và chạy các bài kiểm thử liên quan ở cả chế độ loose lẫn strict. Công việc hoàn tất khi các nội dung byte khác nhau được so sánh là không bằng nhau, đúng với hành vi assert.deepEqual của Node.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Mô tả

deepEqual returns true for any two DataView instances regardless of their byte length, offset, or contents, in both loose and strict mode. Node's assert.deepEqual (which this package mirrors) compares DataView contents and fails when they differ. ArrayBuffer had the same issue in #94 before explicit support was added, while DataView still falls through to comparing own enumerable keys (of which it has none).

Reproduction (node repro.js):

const deepEqual = require("deep-equal");
const assert = require("assert");
const a = new DataView(new Uint8Array([1, 2, 3]).buffer);
const b = new DataView(new Uint8Array([4, 5, 6]).buffer);
console.log(deepEqual(a, b), deepEqual(a, b, { strict: true }));
try { assert.deepEqual(a, b); console.log("assert: equal"); } catch { console.log("assert: not equal"); }

Actual:

true true
assert: not equal

Expected:

false false
assert: not equal

Tested with deep-equal 2.2.3 (npm) and main (83701ada), Node v26.13.0.

Credit: https://ucsbplse.github.io/

Ngôn ngữ chính
JavaScript
Star
792
Fork
107
Merge trung bình
9 ngày 20 giờ
Pull request đã merge (30 ngày)
1

Chuẩn bị môi trường

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Issue khác của inspect-js/node-deep-equal

Tất cả issue của inspect-js/node-deep-equal

Issue tương tự

Thêm issue về JavaScript

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.