mirror of
https://github.com/servo/servo.git
synced 2025-08-14 18:05:36 +01:00
Implement AtomicRef::map.
MozReview-Commit-ID: 8iOALQylOuK
This commit is contained in:
parent
cf9d282914
commit
d252c8e42a
3 changed files with 113 additions and 4 deletions
41
tests/unit/style/atomic_refcell.rs
Normal file
41
tests/unit/style/atomic_refcell.rs
Normal file
|
@ -0,0 +1,41 @@
|
|||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
use style::atomic_refcell::{AtomicRef, AtomicRefCell};
|
||||
|
||||
struct Foo {
|
||||
u: u32,
|
||||
}
|
||||
|
||||
struct Bar {
|
||||
f: Foo,
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn map() {
|
||||
let a = AtomicRefCell::new(Bar { f: Foo { u: 42 } });
|
||||
let b = a.borrow();
|
||||
assert_eq!(b.f.u, 42);
|
||||
let c = AtomicRef::map(b, |x| &x.f);
|
||||
assert_eq!(c.u, 42);
|
||||
let d = AtomicRef::map(c, |x| &x.u);
|
||||
assert_eq!(*d, 42);
|
||||
}
|
||||
|
||||
/* FIXME(bholley): Enable once we have AtomicRefMut::map(), which is blocked on
|
||||
* https://github.com/Kimundi/owning-ref-rs/pull/16
|
||||
#[test]
|
||||
fn map_mut() {
|
||||
let a = AtomicRefCell::new(Bar { f: Foo { u: 42 } });
|
||||
let mut b = a.borrow_mut();
|
||||
assert_eq!(b.f.u, 42);
|
||||
b.f.u = 43;
|
||||
let mut c = AtomicRefMut::map(b, |x| &x.f);
|
||||
assert_eq!(c.u, 43);
|
||||
c.u = 44;
|
||||
let mut d = AtomicRefMut::map(c, |x| &x.u);
|
||||
assert_eq!(*d, 44);
|
||||
*d. = 45;
|
||||
assert_eq!(*d, 45);
|
||||
}*/
|
|
@ -19,6 +19,7 @@ extern crate style_traits;
|
|||
extern crate url;
|
||||
extern crate util;
|
||||
|
||||
mod atomic_refcell;
|
||||
mod attr;
|
||||
mod cache;
|
||||
mod logical_geometry;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue