mirror of
https://github.com/zhigang1992/angular.js.git
synced 2026-04-01 12:33:37 +08:00
fix(angular.copy): throw Error if source and destination are identical
Closes #693
This commit is contained in:
@@ -597,6 +597,7 @@ function copy(source, destination){
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (source === destination) throw Error("Can't copy equivalent objects or arrays");
|
||||
if (isArray(source)) {
|
||||
while(destination.length) {
|
||||
destination.pop();
|
||||
|
||||
@@ -65,6 +65,14 @@ describe('angular', function() {
|
||||
it('should throw an exception if a Window is being copied', function() {
|
||||
expect(function() { copy(window); }).toThrow("Can't copy Window or Scope");
|
||||
});
|
||||
|
||||
it('should throw an exception when source and destination are equivalent', function() {
|
||||
var src, dst;
|
||||
src = dst = {key: 'value'};
|
||||
expect(function() { copy(src, dst); }).toThrow("Can't copy equivalent objects or arrays");
|
||||
src = dst = [2, 4];
|
||||
expect(function() { copy(src, dst); }).toThrow("Can't copy equivalent objects or arrays");
|
||||
});
|
||||
});
|
||||
|
||||
describe('equals', function() {
|
||||
|
||||
Reference in New Issue
Block a user