blob: 6a52d781a6b684b16cd4f225ef04554f71e56e62 [file] [log] [blame]
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
use crate::test_helpers::TextFieldWrapper;
use failure::{bail, Error};
use fidl_fuchsia_ui_text as txt;
// TextField::OnUpdate() tests
// #######################################################
pub async fn test_noop_causes_state_update(text_field: &mut TextFieldWrapper) -> Result<(), Error> {
let rev = text_field.state().revision;
text_field.proxy().begin_edit(rev)?;
if await!(text_field.proxy().commit_edit())? != txt::TextError::Ok {
bail!("Expected commit_edit to succeed");
}
await!(text_field.wait_for_update())?;
// check that we get another state update, and revision was increased
if text_field.state().revision <= rev {
bail!(format!(
"Expected new revision ({}) to be greater than old revision ({})",
text_field.state().revision,
rev
));
}
Ok(())
}
// TextField::PointOffset()/TextField::Distance()/TextField::Contents() tests
// #######################################################
pub async fn test_simple_content_request(text_field: &mut TextFieldWrapper) -> Result<(), Error> {
await!(text_field.simple_insert("meow1 meow2 meow3"))?;
// check length and contents of last two meows
let mut doc_end = text_field.state().document.end;
let start_point = await!(text_field.point_offset(&mut doc_end, -11))?;
let mut range = txt::TextRange { start: start_point, end: doc_end };
await!(text_field.validate_distance(&range, 11))?;
await!(text_field.validate_contents(&range, "meow2 meow3"))?;
let (meows, _true_start) = await!(text_field.contents(&mut range))?;
if meows != "meow2 meow3" {
bail!(format!(
"Expected contents request to return \"meow2 meow3\", instead got {:?}",
meows
))
}
Ok(())
}