Skip to content

Instantly share code, notes, and snippets.

View lawreyios's full-sized avatar
🎯
Focusing

Lawrence Tan lawreyios

🎯
Focusing
View GitHub Profile
extension Binding {
func onChange(_ handler: @escaping (Value) -> Void) -> Binding<Value> {
return Binding(
get: { self.wrappedValue },
set: { selection in
self.wrappedValue = selection
handler(selection)
})
}
}
class ContentViewModel: ObservableObject {
@Published var selectedSegment = Gender.male.rawValue {
didSet {
characters = selectedSegment == Gender.male.rawValue ? males : females
}
}
@Published var characters = males
enum Gender: Int {
case male
case female
}
struct Character: Identifiable {
var id: Int
var name: String
}
import Combine
import Alamofire
class LoginHandler: APIHandler {
@Published var woofResponse: WoofResponse?
@Published var isLoading = false
func getRandomDog() {
isLoading = true
private var isLoadingPublisher: AnyPublisher<Bool, Never> {
loginHandler.$isLoading
.receive(on: RunLoop.main)
.map { $0 }
.eraseToAnyPublisher()
}
private var isAuthenticatedPublisher: AnyPublisher<String, Never> {
loginHandler.$woofResponse
.receive(on: RunLoop.main)
var body: some View {
NavigationView {
LoadingView(isShowing: .constant(viewModel.isLoading)) {
VStack(alignment: .leading) {
self.titleView
self.placeHolderTextView
self.passwordTextView
self.loginButton
Spacer()
Spacer()
override func viewDidLoad() {
super.viewDidLoad()
people.bind(to: tableView.rx.items(cellIdentifier: "PersonCell")) { row, model, cell in
cell.textLabel?.text = "\(model.name) from \(model.title)"
}.disposed(by: disposeBag)
}
fileprivate let people: BehaviorRelay<[Person]> = BehaviorRelay(value: [
Person(name: "Spiderman", title: "Marvel"),
Person(name: "Batman", title: "DC"),
Person(name: "Mickey", title: "Disnet")
])
let disposeBag = DisposeBag()
import 'package:flutter_test/flutter_test.dart';
import 'package:tryunittesting/TextValidator.dart';
void main() {
group('Given user is at Login Page', () {
test(
'and user keys in username, username should be at least 8 characters long',
() {
expect(TextValidator().validateUsername('test'), false);
expect(TextValidator().validateUsername('testtest'), true);
class TextValidator {
bool validateUsername(String username) {
return false;
}
bool validatePassword(String password) {
return false;
}
}