diff --git a/tests/component/updater_test.cpp b/tests/component/updater_test.cpp
index ec9c290..bd6534b 100644
--- a/tests/component/updater_test.cpp
+++ b/tests/component/updater_test.cpp
@@ -25,8 +25,7 @@
 
 struct selabel_handle *sehandle = nullptr;
 
-static void expect(const char* expected, const char* expr_str,
-                   ErrorCode error_code, CauseCode cause_code) {
+static void expect(const char* expected, const char* expr_str, CauseCode cause_code) {
     Expr* e;
     int error_count;
     EXPECT_EQ(parse_string(expr_str, &e, &error_count), 0);
@@ -41,7 +40,10 @@
         EXPECT_STREQ(expected, result);
     }
 
-    EXPECT_EQ(error_code, state.error_code);
+    // Error code is set in updater/updater.cpp only, by parsing State.errmsg.
+    EXPECT_EQ(kNoError, state.error_code);
+
+    // Cause code should always be available.
     EXPECT_EQ(cause_code, state.cause_code);
 
     free(result);
@@ -59,13 +61,40 @@
 TEST_F(UpdaterTest, getprop) {
     expect(android::base::GetProperty("ro.product.device", "").c_str(),
            "getprop(\"ro.product.device\")",
-           kNoError, kNoCause);
+           kNoCause);
 
     expect(android::base::GetProperty("ro.build.fingerprint", "").c_str(),
            "getprop(\"ro.build.fingerprint\")",
-           kNoError, kNoCause);
+           kNoCause);
 
     // getprop() accepts only one parameter.
-    expect(nullptr, "getprop()", kNoError, kArgsParsingFailure);
-    expect(nullptr, "getprop(\"arg1\", \"arg2\")", kNoError, kArgsParsingFailure);
+    expect(nullptr, "getprop()", kArgsParsingFailure);
+    expect(nullptr, "getprop(\"arg1\", \"arg2\")", kArgsParsingFailure);
+}
+
+TEST_F(UpdaterTest, sha1_check) {
+    // sha1_check(data) returns the SHA-1 of the data.
+    expect("81fe8bfe87576c3ecb22426f8e57847382917acf", "sha1_check(\"abcd\")", kNoCause);
+    expect("da39a3ee5e6b4b0d3255bfef95601890afd80709", "sha1_check(\"\")", kNoCause);
+
+    // sha1_check(data, sha1_hex, [sha1_hex, ...]) returns the matched SHA-1.
+    expect("81fe8bfe87576c3ecb22426f8e57847382917acf",
+           "sha1_check(\"abcd\", \"81fe8bfe87576c3ecb22426f8e57847382917acf\")",
+           kNoCause);
+
+    expect("81fe8bfe87576c3ecb22426f8e57847382917acf",
+           "sha1_check(\"abcd\", \"wrong_sha1\", \"81fe8bfe87576c3ecb22426f8e57847382917acf\")",
+           kNoCause);
+
+    // Or "" if there's no match.
+    expect("",
+           "sha1_check(\"abcd\", \"wrong_sha1\")",
+           kNoCause);
+
+    expect("",
+           "sha1_check(\"abcd\", \"wrong_sha1\", \"wrong_sha2\")",
+           kNoCause);
+
+    // sha1_check() expects at least one argument.
+    expect(nullptr, "sha1_check()", kArgsParsingFailure);
 }
